我使用以下集合选择来让用户选择联系人姓名。
<div class="form-group">
<%= f.label :contact %>
<%= f.collection_select(:contact, current_user.contacts.all, :id, :name, prompt: true, class: "form-control") %>
</div>
但是,不是名称,而是email.contact
在显示页面中使用时显示的ID 。我尝试使用email.contact.name,它返回NoMethodError。至于关联,电子邮件有has_many个联系人和联系人arenes_to电子邮件。我什至尝试使用inverse_of这些关联,但仍然无法检索联系人姓名。有没有解决方法可以解决此问题?
如果你看 collection_select
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
如果你看文档说
:value_method和:text_method参数是在集合的每个成员上调用的方法。返回值分别用作每个标签的value属性和内容。
因此,您需要将value_method作为要保存在db中的方法传递,现在您将其用作id。要保存名称,您可以执行以下操作:
<%= f.collection_select(:contact, current_user.contacts.all, :name, :name, prompt: true, class: "form-control") %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句