我正在使用rails has_many通過選項,並不確定如果我在這裏做錯了什麼。我希望球員創造一個賽季,當球員即將創造一個賽季時,它將顯示我在年/新創建的所有賽季的選擇菜單。到目前爲止,這部分工作得很好,但是當一名球員嘗試保存賽季時,rails並不能保存它。我不確定我的關聯是否正確,或者我做錯了什麼?有沒有任何理由爲什麼這不起作用?Rails有很多通過關係
錯誤
No association found for name `season_year'. Has it been defined yet?
season.rb
class season < ActiveRecord::Base
belongs_to :player
has_many :quarters
has_many :years , :through => :quarters
attr_accessible :season_year_attributes
accepts_nested_attributes_for :season_year
end
quarter.rb
class Quarter < ActiveRecord::Base
belongs_to :player
belongs_to :year
belongs_to :season
end
year.rb
class Year < ActiveRecord::Base
attr_accessible :season_year, :season_name
has_many :quarters
has_many :seasons, :through => :quarters
end
player.rb
class player < ActiveRecord::Base
has_many :seasons, :through => :quarters
has_many :years, :through => :quarters
end
_season-form.html.erb
<%= form_for(@season) do |f| %>
<div class="field">
<%= f.label :season %>
<%= f.text_field :season_name %>
</div>
<%= f.fields_for :years do |year| %>
<%= select("season", "year_ids", Year.all.collect {|p| [ p.season_year, p.id ] }, { :include_blank => true }) %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
感謝沒有注意到,但它仍然不保存我選擇的選擇? – coletrain 2012-04-26 21:00:46
您應該能夠移除<%= f.fields_for:年| do | year | %>,因爲這會循環與選定季節相關的年份,但select()語句正在收集所有年份,無論它們是什麼關聯。回到錯誤...當你保存時,你是否收到錯誤信息? – 2012-04-26 21:27:25
我還在Season模型中爲我的attr_accessible語句添加了「:year_ids」,以便Rails在保存季節時接受year_ids。當我這樣做,它正確保存/更新我的賽季。 – 2012-04-26 21:29:09