这是我第一次发帖,如果有什么需要补充的请告诉我。我有一个 Event 资源和一个嵌套的 Item 资源(功能是允许活动的客人携带物品)。
我在事件编辑视图中有一个嵌套的项目更新表单,它允许您从下拉选择框中选择一个项目,然后从另一个选择框中选择一个数量来更新所需的项目数量。这是下面的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 是复数形式,所以当我只想要一个“项目名称”选择框和一个“项目数量”选择框时,我会得到一个与事件关联的每个项目的选择框。
当我将表单更改为 :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
事件控制器的编辑动作(仅相关部分):
def edit
@event = Event.find(params[:id])
@item = @event.items.build
unauthorized! if cannot? :update, @event
end