どのようにしての名前をtext_field :name
に表示することができますか?duels/_dueler_fields?フォームに異なるオブジェクトの属性を設定するにはどうすればよいですか?
DuelsController
def new
@duel = Duel.new
@duel.duelers << Dueler.new(user: current_user)
end
レールC
pry(main)> Duel.last
id: 20,
consequence: "Run naked lap",
pry(main)> Dueler.last
id: 34,
user_id: 78,
challenge_id: 295,
duel_id: 20,
pry(main)> User.find(78)
id: 78,
name: "Anthony" # How to get User's name?
決闘/ _form
<%= simple_form_for(@duel) do |f| %>
<%= f.fields_for :duelers do |dueler| %>
<%= render 'dueler_fields', :f => dueler %>
<% end %>
The loser(s) will <%= f.text_field :consequence, placeholder: "Enter Consequence" %>.
<%= f.submit %>
<% end %>
あなたの説明から決闘/ _dueler_fields
<%= f.number_field :user_id, placeholder: "Enter User" %>. # This will give the correct id number, but I tried setting it to text_field :name. That didn't work
ありがとう!あなたの最初の提案は、 'のための'未定義のメソッド 'user_id'というエラーを返します。 '確かに' current_user'の名前を 'id'ではなく' text_field'に表示しようとしています。返事が遅れて申し訳ありません! –
私はあなたのモデルについても仮定しましたが、そうではないかもしれません。あなたのDuelモデルに 'belongs_to:user'という関連があることを確認してください。 – bdx
また、 'current_user'の名前が選択ボックスではなくテキストフィールドに表示されるように設定されている場合、上記はあなたのためにはうまくいかないでしょう。それには、ユーザの名前に基づいて検索を行い、user_idを '@duel'に入れるようにコントローラを変更するか、HTMLの隠れた' user_id'入力フィールドを私が想像しているように更新するカスタムコントロールを使う必要があります入力された名前のライブルックアップとなります。 – bdx