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}") %>