【问题标题】:Missing params[:id] in form post表单帖子中缺少参数 [:id]
【发布时间】:2012-11-27 10:59:14
【问题描述】:

我知道我遗漏了一些东西。我不知道如何解决它。

我有一个具有body 属性的消息模型。

控制器位于users/messages_controller.rb

我的路线

  namespace :users do
    resources :messages
  end

给了

users_messages     GET    /users/messages(.:format)           users/messages#index
                   POST   /users/messages(.:format)           users/messages#create
new_users_message  GET    /users/messages/new(.:format)       users/messages#new
edit_users_message GET    /users/messages/:id/edit(.:format)  users/messages#edit
users_message      GET    /users/messages/:id(.:format)       users/messages#show
                   PUT    /users/messages/:id(.:format)       users/messages#update
                   DELETE /users/messages/:id(.:format)       users/messages#destroy

我创建了一个部分,我通过它呈现给用户/显示

  <%= render :partial => 'users/messages/sendme' %>

_sendme.html.erb

<%= form_tag(users_messages_path) do %>
         <%= text_area_tag "Message" %>
         <%= submit_tag 'Submit' %>
<% end %>

但是当我提交消息时,它进入 messages_controller 中的创建操作时,我无法提取发送消息的用户的 ID。 我得到的参数是

pry(#<Users::MessagesController>)> params
=> {"utf8"=>"Γ£ף",
 "authenticity_token"=>"IrcPBHgBp/BI...mBbOQx7gcJc5xNtAFs=",
 "Message"=>"test",
 "commit"=>"Submit",
 "action"=>"create",
 "controller"=>"users/messages"}

用户/节目的网址是http://localhost:3000/users/24 我需要添加什么才能在参数中获取用户 ID?

【问题讨论】:

    标签: ruby-on-rails-3 forms routing params


    【解决方案1】:

    如果您的表单中有@user,请在其中创建一个hidden_field_tag,如下所示:

    <%= hidden_field_tag :id, @user.id %>
    

    然后,当您提交表单时,params[:id] 将填充为 @user.id

    【讨论】:

    • 谢谢,有没有没有隐藏字段的方法?不知何故来自用户#show url?
    • 我不这么认为。参数始终是表单的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多