0

这是我的相关模型:

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属于他们拥有的用户指定列表。新的ListItem也需要通过各自的:item_idand :inventory_item_id。这是我当前观点的相关部分:

<tr>
        <% item.inventory_items.each do |product| %>
        <td><%= button_to "#{product.price}",
                           {:controller => :list_items,
                            :action => 'create',
                            :id => #what goes here??,
                            :method => :create %></td>
        <% end %>
</tr>

而我的 ListItems 控制器创建方法:

def create
        ListItem.create
        flash[:success] = "List Item Added."
        redirect_to search_results_path(params[:search])
end

显然,我的 create 方法现在并不是很有用,因为它只是创建了一个 ListItem,除了:id. 将适当的参数传递给我的控制器的最佳方式是什么?任何帮助深表感谢!提前致谢。

4

1 回答 1

0

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

这对我来说效果很好,在这种情况下比使用button_to.

于 2013-08-22T21:44:31.637 回答