我试图在表单上显示复选框,显示用户的所有联系人,以便用户可以选择所需的联系人。到目前为止,我已经在表单上完成了这个操作,它显示了复选框但没有值:
Illuminate\Queue\QueueManager:
arguments:
app: "@app"
calls:
- [ addConnector, ["@Illuminate\\Queue\Connector\NullConnector", "@some_callback"]]
但是,当我尝试将行 <% @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 %>
有解决方法吗?我之前看过多个帖子并尝试了各种选项但似乎没有任何帮助,包括:
Ruby on rails f.label for a check box http://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/collection_check_boxes How to add a checkbox for each row in Rails 3.2 index page?
答案 0 :(得分:1)
视图中有太多逻辑。我无法看到您的代码,但我可以给您一些建议:
在控制器中:
@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 %>