我開始使用Ruby on Rails,並且遇到關聯has_many :through
的問題。Rails協會has_many:通過
我使用的型號有:
class Phrase < ActiveRecord::Base
attr_accessible :event_type_id, :template_pieces
belongs_to :event_type
has_many :phrases_pieces
has_many :template_pieces, :through => :phrases_pieces
end
class TemplatePiece < ActiveRecord::Base
attr_accessible :datatype, :fixed_text, :name
has_many :phrase_pieces
has_many :phrases, :through => :phrases_pieces
end
class EventType < ActiveRecord::Base
attr_accessible :name
has_many :phrases
end
class PhrasesPiece < ActiveRecord::Base
attr_accessible :order, :phrase_id, :template_piece_id
belongs_to :phrase
belongs_to :template_piece
end
而且我試圖創造一個新詞,修改其默認形式:
<%= form_for(@phrase) do |f| %>
<% if @phrase.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@phrase.errors.count, "error") %> prohibited this phrase from being saved:</h2>
<ul>
<% @phrase.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
Select the event type:
<%= collection_select(:phrase, :event_type_id, EventType.all, :id, :name) %>
Select the phrases to be used:
<%= collection_select(:phrase, :template_pieces, TemplatePiece.all, :id, :name) %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我首先有一個問題與質量作業,但我解決了在短語模型中添加attr_accessible :template_pieces
。我不確定這是否是修復它的正確方法,但至少它停止抱怨說它無法批量分配受保護的屬性。
未定義的方法`每個」爲‘1’:現在
,提交一個新詞時,我收到以下錯誤字符串
哪我還挺想偏偏因事實上,對於給定的短語應該有很多template_pieces,但是我目前只能一次提交一個。所以它只是找到它,試圖遍歷它並失敗。
我該如何解決這個問題?將數據庫has_many :through
輸入模型有沒有更好的方法?我是否必須手動執行此操作(如解除默認控制器@phrase = Phrase.new(params[:phrase]
)?
謝謝!
有一個完整的堆棧跟蹤以及錯誤會很有幫助。 – adamdunson 2013-03-06 20:02:18
以下是顯示的錯誤頁面: [page capture](https://www.dropbox.com/s/62dat91bx4dh2jg/error_msg.png?m) – snowingheart 2013-03-06 23:49:16