Rails如何使用双嵌套模型创建选择下拉列表?

时间:2016-01-19 04:58:57

标签: ruby-on-rails ruby forms

我是Rails的新手,我正在尝试为菜单项创建一个选择下拉列表。复杂的部分是每个餐厅都有许多类别,其中有许多菜单项。我的目标是有一个下拉列表,打印如下内容:

<optgroup label="Category 1">
  <option value="menu_item 1">Menu Item 1</option>
  <option value="menu_item 2">Menu Item 2</option>
  <option value="menu_item 3">Menu Item 3</option>
</optgroup>
<optgroup label="Category 2">
  <option value="menu_item 1">Menu Item 1</option>
  <option value="menu_item 2">Menu Item 2</option>
  <option value="menu_item 3">Menu Item 3</option>
  <option value="menu_item 4">Menu Item 4</option>
</optgroup>

以下是我的模特

class Category < ActiveRecord::Base
  belongs_to  :restaurant
  has_many :menus, dependent: :destroy
end

class Restaurant < ActiveRecord::Base
  has_many :meals, dependent: :destroy
  accepts_nested_attributes_for :meals
  has_many :categories, dependent: :destroy
end

class Menu < ActiveRecord::Base
  belongs_to  :category
end

在我添加分类模型之前,我有以下内容来创建我的Meal对象:

<%= form_for [@customer,@meal] do |f| %>
 <%=f.collection_select(:food_item,restaurant.menus.all, :name, :name) %>
 <%= f.hidden_field :restaurant_id, value: restaurant.id %>
 <%= f.submit "Submit meal"%>
<%end%>

我试图找出一种方法来做类似于Grouped Select in Rails的事情,但我不确定如何与所涉及的额外模型完全一致。如果我需要包含任何其他信息,请提前告知我们,并提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

得到了帮助,并且能够使用它!

<%= f.grouped_collection_select(:food_item, restaurant.categories, :menus,    :name, :name, :name) %>

来源:http://apidock.com/rails/v4.2.1/ActionView/Helpers/FormOptionsHelper/grouped_collection_select