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" } %>
我有一个 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" } %>