加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Rails 3中将参数传递给我的表单中的hidd

发布时间:2020-12-17 02:31:13 所属栏目:百科 来源:网络整理
导读:我正在尝试使用消息传递功能(使用 acts-as-messageable gem),我希望用户无需输入’:to’字段即可发送消息. 在我的/users/show.html.erb中我有: %= link_to 'Send a message',new_message_path % 在我的/messages/new.html.erb中: %= simple_form_for @mes
我正在尝试使用消息传递功能(使用 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的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读