我正在尝试在表单上显示复选框,该复选框显示用户的所有联系人,以便用户随后可以选择所需的联系人。到目前为止,我已经在窗体上完成了此操作,该窗体显示复选框,但没有任何值:
<% @contacts.each do |contact| %>
<% if contact.user.id == User.find(session[:user_id]).id %>
<%= f.check_box :to %>
<% end %>
<% end %>
但是,当我试图改变线路<%= f.check_box :to %>
,以<%= f.check_box :to, contact.email %>
显示联系人的电子邮件地址,我得到的错误:
undefined method `merge' for "[email protected]":String
有没有解决的办法?我之前看过多个帖子,尝试过各种选项,但似乎没有帮助,包括:
Ruby on Rails f.label为复选框 http://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/collection_check_boxes 如何为Rails 3.2索引页中的每一行添加一个复选框?
视图中的逻辑太多。我看不到您的代码,但是我可以给您一些建议:
在控制器中:
@contacts_of_current_user = @contacts.where(user_id: session[:user_id])
看法:
<% @contacts_of_current_user.each do |contact| %>
<%= f.label :to, contact.email %>
<%= f.check_box :to, {}, contact.email %>
<% end %>
<% end %>
从评论中我了解到,您需要获取一连串选定的电子邮件。
有两种方法可以做到这一点。
1)以某种方式在客户端(JavaScript)上构建此字符串
2)或传递一系列电子邮件,然后在服务器上将它们串联为单个字符串
我可以向您展示如何传递数组:
<%= f.collection_check_boxes(:to, @contacts, :email, :email ) %>
或者,您可以手动执行以下操作:
<% @contacts_of_current_user.each do |contact| %>
<%= f.label :to, contact.email %>
<%= check_box_tag 'to[]', contact.email %>
<% end %>
<% end %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句