使用集合选择从联系人ID中检索联系人详细信息

时间:2014-10-05 18:06:43

标签: ruby-on-rails

我使用以下集合选择让用户选择联系人姓名。

<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联系人和联系人belongs_to电子邮件。我甚至尝试使用inverse_of这些关联,但仍然无法检索联系人姓名。有解决方法吗?

1 个答案:

答案 0 :(得分:1)

如果你看collection_select

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

如果你看一下它说的文件

  

:value_method和:text_method参数是要在集合的每个成员上调用的方法。返回值分别用作值属性和每个标记的内容。

因此您需要将value_method作为您希望它保存在db中的方法,现在您将其用作id。 要保存名称,您可以执行某些操作像这样:

<%= f.collection_select(:contact, current_user.contacts.all, :name, :name, prompt: true, class: "form-control") %>