在帖子中缺少参数[:id]

时间:2012-11-27 10:59:15

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

我知道我错过了什么......我不知道如何解决它。

我有一个具有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

我创建了一个部分,我通过

在users / show上呈现
  <%= render :partial => 'users/messages/sendme' %>

_sendme.html.erb

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

但是当我提交一条消息,并且它转到messages_controller中的create动作时,我无法提取发送消息的用户的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 我需要添加什么才能在params中获取用户的ID?

1 个答案:

答案 0 :(得分:1)

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

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

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