私は2つのモデルで簡単な演習を行っています。Rails - 外来キー参照をフォームに表示
rails g scaffold sport name:integer rails g scaffold team name:integer fans:integer sport:references
として定義スポーツとチームは、(注:私は足場を使用している理由は、急速に部品を/私は学ぶことができるので、実験のプロトタイプを作成されて、私はまだ慣れていないよ)
問題があることです(外部キー参照すなわち)私の「スポーツは」...だから、それはそれにその奇妙な#<blahl blah>
表記持って、次の
のように見せている
<%= form_for(@team) do |f| %>
<% if @team.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@team.errors.count, "error") %> prohibited this team from being saved:</h2>
<ul>
<% @team.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :fans %><br />
<%= f.number_field :fans %>
</div>
<div class="field">
<%= f.label :sport %><br />
<%= f.text_field :sport %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
私は@team.sport.name
に1行を変更しようとしましたが、エラーが発生しますundefined method 'Ice Hockey' for #<Team:0x3e7e040>
...ここから適切に名前を表示する方法はありますか?
おかげ@MrYoshiji 。私はあなたの最初の提案を開始しようとしている、と値が正しく選択ボックスに表示されます。しかし、保存しようとすると 'ActiveModel :: MassAssignmentSecurity :: Error'が表示されます。「保護された属性を大量に割り当てることはできません:sport_id' – Ricky
私のattr_accessorsに':sport_id'を追加しましたteams_controller。これは正しい方法でしたか?また、2番目の方法を試してみましたが、うまくいきませんでしたが、なぜか分かりません。 'Sport.scoped'とは何ですか? 'edit'メソッドで必要なのはなぜですか?例えば、 'new'メソッドも同じ' _form.html.erb'ビューを共有していますが、 '@sports = Sport.scoped'を呼び出すことはありませんが、まだ動作しています...どんな洞察もありがとう – Ricky