Rails - Collection_select 输入显示选择的 ID 而不是所需的值

Rails - Collection_select input showing ID of selection rather then the desired value

我有一个 rails 应用程序,其中有一个 Project 模型、一个 Team 模型和一个 User 模型。我正在尝试使用 Team 模型在 Project form 中创建一个嵌套表单,在这个嵌套表单中我有一个 collection_select 字段允许用户 select 现有用户的电子邮件(来自 User 模型)并在 Team 模型中的名为 :member 的列中输入检索到的数据。到目前为止,一切正常,但我遇到的问题是,在 show 页面上,从 collection_select 字段收集的数据显示为数字(用户 ID)提交表单时 selected 的电子邮件数量。为什么会发生这种情况,我该如何解决这个问题?提前致谢!

项目形式:-

<%= bootstrap_nested_form_for(@project, :html => {:multipart => true}, layout: :horizontal)   do |f| %>

.
.

  <% f.fields_for :teams do |builder| %>
    <%= builder.collection_select :member, User.all, :id, :email, { prompt: "Please select", :selected => params[:user], label: "Employee" } %> 
    <%= builder.link_to_remove "Remove" %>
  <% end %>
  <%= f.link_to_add "Add Team Member", :teams %>


 <%= f.submit %>
<% end %>

显示页面:-

    <p>
      <strong>Team:</strong>
      <% @project.teams.each do |team| %>
        <%= team.member %>
      <% end %>
    </p>
  </div>
</div>

据此http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

您将检查第三个选项是作为值保存在 table 中的 value_method。所以目前是 id。您需要将其替换为 email.

这会起作用

<%= builder.collection_select :member, User.all, :email, :email, { prompt: "Please select", :selected => params[:user], label: "Employee" } %>