Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用集合选择从联系人id检索联系人详细信息_Ruby On Rails - Fatal编程技术网

Ruby on rails 使用集合选择从联系人id检索联系人详细信息

Ruby on rails 使用集合选择从联系人id检索联系人详细信息,ruby-on-rails,Ruby On Rails,我使用以下集合select让用户选择联系人姓名 <div class="form-group"> <%= f.label :contact %> <%= f.collection_select(:contact, current_user.contacts.all, :id, :name, prompt: true, class: "form-control") %> </div> 但是,不是姓名,而是我使用电子邮件时显示的i

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

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

但是,不是姓名,而是我使用
电子邮件时显示的id。请在显示页面中与
联系。我尝试使用email.contact.name,但它返回一个NoMethodError。至于协会,电子邮件有许多联系人,联系人属于电子邮件。我甚至尝试使用这些关联的逆_,但仍然无法检索联系人姓名。是否有一种解决方法可以解决这个问题?

如果您看到

如果你看文件,上面写着

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

因此,您需要将value\u方法作为希望保存在db中的方法进行传递,现在您将其用作id。要保存名称,可以执行以下操作:

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


您能解释一下您所说的
是什么意思吗?但是,我在显示页面中使用email.contact时显示的不是姓名而是id?它与collection_select有什么关系?电子邮件有很多联系人,所以它应该是Email.contacts,它会给你一个记录集,而不是一个record@mandeep下拉列表显示所有联系人的姓名。但是,当点击submit按钮时保存的是id。例如,如果选择了John,则会保存John的用户id而不是名称。在集合中,选择我正在使用的,它看起来像是默认保存的id。不确定,在这种情况下如何从存储的用户id显示联系人的姓名。我已经尝试过了。问题是,我需要后台邮件发送者的联系人id。因此,我必须在show页面中显示姓名,但在db中为工人使用联系人id。这就是为什么早些时候提到了这些协会。如果可能的话,想知道如何使用它。@user3224820对不起,我没听清楚。在您之前的评论中,您提到您希望将名称保存在db中,而不是说您想要id?为什么不将联系人的id保存在db中?如果您的关联设置正确,则您可以随时从idsorry获取其他信息,以避免混淆。关联设置正确。所以,理想情况下,我应该能够使用,因为id存储在db中,对吗?相反,我为“2”:String得到了一个NoMethodError-undefined方法'name'。2是本例中的联系人id。@user3224820我想我了解您的问题。当您的联系人属于电子邮件列表时,请在电子邮件表中查找名为contact_id的属性,这样您需要首先将联系人字段更改为contact_id,以便它可以找到您的正确联系人。您需要在此字段中存储联系人id。此外,由于电子邮件有许多联系人,您将不得不使用email.contacts,它将为您提供一个活动记录关系,或者简单地说是一组记录。有关详细信息,请检查您是否正确。必须有联系人id形式的外键关联,而不仅仅是联系人,才能无缝地工作。谢谢你的帮助!
<%= f.collection_select(:contact, current_user.contacts.all, :name, :name, prompt: true, class: "form-control") %>