Проблема, с которой я сталкиваюсь при Formtastic
, заключается в том, что у меня есть форма для создания новой Order
.В этой форме я хочу выбрать из списка несколько существующих Food
элементов.Они должны быть добавлены в новый заказ, который я отправляю.В то же время я также хочу установить атрибуты в модели соединения FoodOrder
.Эта модель имеет целочисленный атрибут количества, для которого я хотел бы иметь поле в моей форме.
Что я в основном ищу, так это форму, в которой перечислены все продукты питания и помещено поле для quantity
в той же строке, что и элемент питания, к которому он принадлежит.
Модели
class Order < ActiveRecord::Base
belongs_to :user
belongs_to :restaurant
has_many :food_orders
has_many :foods, :through => :food_orders
end
class FoodOrder < ActiveRecord::Base
belongs_to :food
belongs_to :order
end
class Food < ActiveRecord::Base
has_many :food_orders
has_many :orders, :through => :food_orders
belongs_to :category
end
Это одна из версий формы, которую я пробовал до сих пор.Но я просто сбит с толку и не знаю, как получить поля для модели FoodOrder.
<%= semantic_form_for [@restaurant, @order] do |f| %>
<%= f.inputs do %>
<%= f.input :comment %><br />
<%= f.input :table_id %><br />
<%# <%= f.input :foods, :as => :check_boxes %>
<%= f.inputs :for => :foods do |food| %>
<%= food %>
<%= food.inputs :quantity %>
<% end %>
<% end %>
<%= f.buttons do %>
<%= f.commit_button %>
<% end %>
<% end %>
У моих моделей есть эти атрибуты
create_table "food_orders", :force => true do |t|
t.integer "quantity", :null => false
t.decimal "price", :null => false
t.integer "food_id", :null => false
t.integer "order_id", :null => false
t.text "comment"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "foods", :force => true do |t|
t.integer "category_id", :null => false
t.string "name", :null => false
t.string "description"
t.string "image"
t.decimal "default_price", :null => false
t.boolean "active", :default => true, :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "orders", :force => true do |t|
t.integer "restaurant_id", :null => false
t.integer "user_id", :null => false
t.integer "table_id", :null => false
t.decimal "total", :null => false
t.datetime "finished_at"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end