初めて投稿するので、何か追加すべき点があれば教えてください。イベント リソースとネストされたアイテム リソースがあります (この機能は、イベントのゲストがアイテムを持ち込めるようにすることです)。
イベント編集ビューにネストされたアイテム更新フォームがあり、ドロップダウン選択ボックスからアイテムを選択し、別の選択ボックスから数量を選択して、必要なアイテムの数を更新できます。これは以下の form_for です。
= form_for @event do |f|
= f.fields_for :items do |i|
%p
= i.select(:name, options_for_select(@event.items.map {|p| p.name}))
= i.select(:quantity, (1..5))
= f.submit
私の問題は、 :items が複数であるため、「アイテム名」選択ボックスと「アイテム数量」選択ボックスが1つだけ必要な場合に、イベントに関連付けられた各アイテムの選択ボックスを取得することです。
フォームを :item に変更すると、必要なビューが得られますが、[イベントの更新] ボタンを押すと、「アイテム」の不明な属性エラーが発生します。
これを解決するのに役立つ他の情報を教えてください。これはシンプルであるべきだと思います。私はこれをたくさん探しました。私の検索用語の組み合わせが理想的ではなかったのかもしれません。
よろしくお願いします。
編集
これが私のイベント更新アクションです:
def update
@event = Event.find(params[:id])
if @event.update_attributes(params[:event])
redirect_to :back
flash[:notice] = "Items Updated!"
else
redirect_to :back
end
end
編集2
関連するセクションのみを含むイベントおよびアイテム モデル:
class Event < ActiveRecord::Base
attr_accessible :items_attributes, :item_attributes, :name, :item
has_many :items
accepts_nested_attributes_for :items
end
class Item < ActiveRecord::Base
attr_accessible :name, :quantity, :event_id
belongs_to :event
end
Event Controller の Edit Action (関連部分のみ):
def edit
@event = Event.find(params[:id])
@item = @event.items.build
unauthorized! if cannot? :update, @event
end