背景:我创建了一个库存应用程序,该应用程序具有一个属性、每个属性的多个类别以及每个类别的多个项目。
问题:我的问题是在将项目添加到任何类别时,该项目始终作为第一个类别的一部分创建,因此它始终使用第一个类别 created 的 category_id 。以下是以下部分:
物业展示视图
<%= render 'categories/cat_modal' %>
<h4><a href="#myModal" data-toggle="modal">Add a Category</a></h4>
<% @property.categories.each do |category| %>
<h4><%= category.title %></h4>
<% if current_user.try(:admin?) %>
<%= render 'items/item_modal',
category: category,
item: @item %>
<h4><a href="#itemModal" data-toggle="modal">Add an Item</a></h4>
<% end %>
部分- item_modal
<div id="itemModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Add an Item</h3>
</div>
<div class="modal-body">
<%= simple_form_for [category, item] do |f| %>
<%= f.input :name %>
<%= f.submit 'Submit' %>
<% end %>**
</div>
</div>
属性控制器
def show
@property = Property.find(params[:id])
@category = Category.new
@item = @category.items.new
end
类别控制器
def create
@property = Property.find(params[:property_id])
@category = @property.categories.new(params[:category])
if @category.save!
redirect_to property_path(@property), notice: 'category successfully created'
else
render action: 'new'
end
end
物品控制器
def create
@category = Category.find(params[:category_id])
@item = @category.items.new(params[:item])
@event = @category.items.last
if @item.save!
redirect_to :back
Event.create(time: @event.created_at, state: @event.state, item_id: @event.id)
else
end
end