Ruby on rails 创建属于另一资源的资源
以下是我的相关模型:Ruby on rails 创建属于另一资源的资源,ruby-on-rails,database,model,controller,Ruby On Rails,Database,Model,Controller,以下是我的相关模型: class ListItem < ActiveRecord::Base belongs_to :inventory_item belongs_to :shopping_list belongs_to :item end class ShoppingList < ActiveRecord::Base has_many :list_items belongs_to :user, :foreign_key =>
class ListItem < ActiveRecord::Base
belongs_to :inventory_item
belongs_to :shopping_list
belongs_to :item
end
class ShoppingList < ActiveRecord::Base
has_many :list_items
belongs_to :user, :foreign_key => :user_id
end
class InventoryItem < ActiveRecord::Base
belongs_to :item, :foreign_key => :item_id
belongs_to :vendor
has_many :list_items
end
和我的ListItems控制器创建方法:
def create
ListItem.create
flash[:success] = "List Item Added."
redirect_to search_results_path(params[:search])
end
显然,我的create方法现在并没有那么有用,因为它只创建了一个除了
:id
之外没有其他属性的ListItem。向控制器传递适当参数的最佳方式是什么?非常感谢您的帮助!提前感谢。在对SO等进行了大量的窥探之后。我认为实现这一点的最佳方法是使用带有隐藏字段的表单,如下所示:
<%= form_tag("/list_items", method: "post") do %>
<%= hidden_field_tag(:item_id, item.id) %>
<%= hidden_field_tag(:inventory_item_id, product.id) %>
<%= hidden_field_tag(:shopping_list_id, ShoppingList.first.id) %>
<%= submit_tag("#{product.price}") %>
这对我来说效果很好,在这种情况下比使用按钮到更干净
<%= form_tag("/list_items", method: "post") do %>
<%= hidden_field_tag(:item_id, item.id) %>
<%= hidden_field_tag(:inventory_item_id, product.id) %>
<%= hidden_field_tag(:shopping_list_id, ShoppingList.first.id) %>
<%= submit_tag("#{product.price}") %>