0

Projectモデル、モデル、モデルTeamを含むレールアプリがありUserます。モデルを使用してProject フォーム内にネストされたフォームを作成しようとしています。このネストされたフォームには、ユーザーが (モデルから) 既存のユーザーの電子メールを選択し、内部で呼び出された列に取得されたデータを入力できるフィールドがあります。モデル。これまでのところこれは正常に機能していますが、表示ページで、フィールドから収集されたデータが、フォームの送信時に選択された電子メールではなく数字 (ユーザー ID) として表示されるという問題があります。この問題が発生する理由と、問題を解決するにはどうすればよいですか? 前もって感謝します!Teamcollection_selectUser:memberTeamcollection_select

プロジェクトフォーム:-

<%= 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>
4

1 に答える 1

1

これによるとhttp://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

3 番目のオプションが値としてテーブルに保存される value_method であることを確認します。だから現在それはidです。に置き換える必要がありemailます。

これはうまくいきます

<%= builder.collection_select :member, User.all, :email, :email, { prompt: "Please select", :selected => params[:user], label: "Employee" } %>
于 2015-08-04T07:06:03.897 に答える