我有模型Item和ItemCategory。物品归属于ItemCategory。
在Item表单上,我希望能够创建一个新的ItemCategory并将其分配给当前项目。
所以我在项目表单上添加了
<%= link_to '+', new_quick_category_path(item_id: @item.id), remote: true %>
然后在items_controller上
def new_quick_category
@item_category = ItemCategory.new
@item = Item.find(params[:item_id])
end
然后我得到以下表格:
<%= simple_form_for (@item_category), html: { id: :item_category}, remote: true do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<h5> Name </h5>
<%= f.input :name, label: false %>
<%= f.button :submit, "Create", class: "btn btn-sm btn-success" %>
<% end %>
现在使用新创建的item_category更新当前项目,我认为我需要在item_categories_controller上执行此操作:
def create
@item = Item.find(params[:item_id])
@item.update_attributes(item_category_id: @item_category.id)
....
end
所以我需要传递参数item_id来对item_categories_controller创建操作。
我想到的解决方案是将其传递给表单上的“创建”按钮:
<%= f.button :submit, "Create"(item_id: @item.id), class: "btn btn-sm btn-success" %>
但它不起作用。
我该怎么办?还是我应该制作一个嵌套表格?
答案 0 :(得分:2)
请尝试将项目设置为表单中的隐藏字段,以便在您提交表单时将其发送给控制器,隐藏字段应从此类参数中获取值
<%= hidden_field_tag :item_id, params[:item_id] %>