2012-11-27 37 views
0

我知道我错过了一些东西..我不知道如何解决它。在表单中缺少参数[:id]

我有一个消息模型,它具有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。 我得到的PARAMS是

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

的用户/显示的URL http://localhost:3000/users/24 什么我需要补充,所以我可以获取用户的ID在PARAMS?

回答

1

如果有可用的@user在你的形式,创建一个hidden_field_tag里面是这样的:

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

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

+0

谢谢,有没有办法做到这一点没有隐藏领域?不知何故从用户#显示网址? –

+0

我不这么认为。参数始终是表单的字段。 – MurifoX