ruby-on-rails – 如何在Rails 3中将参数传递给我的表单中的hidd
我正在尝试使用消息传递功能(使用
acts-as-messageable gem),我希望用户无需输入’:to’字段即可发送消息.
在我的/users/show.html.erb中我有: <%= link_to 'Send a message',new_message_path %> 在我的/messages/new.html.erb中: <%= simple_form_for @message,:url => messages_path,:method => :post do |f| %> <%= hidden_field_tag :user_id %> <%= f.input :body %> <%= f.submit %> <% end %> 我的消息控制器: def new @message = ActsAsMessageAble::Message.new end def create @to = User.find(params[:user_id]) current_user.send_message(@to,params[:body]) end 在我提交表单的那一刻,Rails显然找不到id = nothing的用户,因为没有param [:user_id]存在. 我无法弄清楚如何将param传递给表单中的hidden_??field_tag? 感谢您的帮助. 解决方法
所以我想要做的是访问用户配置文件,单击发送消息,并能够编写消息并让它自动发送给用户,而无需明确规定:to field.
问题是:<%= hidden_??tag_field中的user_id:user_id%>没有被设定.换句话说,我不能从那个形式的params得到:user_id. 我们尝试的一些解决方案是将params包含在link_to中,但是对于将对象视为nil的形式而言并不合适. 我最终做的是创建一个嵌套资源,如下所示: resources :users do resources :messages do end end 这最终给了我url:users /:id / messages / new(new_user_message_path) 我的控制器最终看起来像这样: def new @message = ActsAsMessageable::Message.new @user = params[:user_id] end def create @to = User.find params[:id] if current_user.send_message(@to,params[:acts_as_messageable_message][:body] flash[:notice] = "Success" else flash[:error] = "Fail" end end 在我能够离开的形式<%= hidden_??tag_field:user_id%>原样. 但基本上解决了找到用户(我正在访问其个人资料)并在我的创建操作中设置@to的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |