2013-09-05 3 views
0

У меня после arragementКак создать вложенную форму рубина на рельсах

Рассмотрена модель Пицца, чтобы создать список пицц, которые могут быть заказаны клиентами, также получает связанный с порядком, так чтобы указать, какие пицца была приказал.

class Pizza < ActiveRecord::Base 
    has_many :pizza_orders 
    has_many :orders, :through => :pizza_orders 
    has_and_belongs_to_many :toppings 
end 

Вариант модель, чтобы создать список опций, которые могут быть связаны с определенным пицем, также получает связанную с присоединиться к таблице для каждого заказа пиццы, чтобы указать, какую пиццу имеет начинку заказывала.

class Topping < ActiveRecord::Base 
    has_and_belongs_to_many :pizzas 
    has_and_belongs_to_many :pizza_orders 
end 

Джойн стол для пиццы и долива, это необходимо, потому что без него вы не можете определить, какие начинки могут или не могут быть заказаны с пиццей. В конце концов, наличие пеперони, возглавляемого вегетарианской пиццей, может оскорбить кого-то.

class PizzasToppings < ActiveRecord::Base 
    belongs_to :pizza 
    belongs_to :topping 
end 

Модель заказа, это просто содержит все таблицы соединения.

class Order < ActiveRecord::Base 
    has_many :pizza_orders 
    has_many :pizzas, :through => :pizza_orders 
end 

Джойн стола между пиццей и порядком, это многие ко многим это имеет много до конца, и не имеет и относится ко многим, так как в Rails, вы не можете напрямую управлять HBATM объединения таблиц (насколько я пытался), и вам нужно иметь возможность из-за отношения отношения параметров.

class PizzaOrder < ActiveRecord::Base 
    belongs_to :pizza 
    belongs_to :order 

    has_and_belongs_to_many :toppings 
end 

Таблица соединений, указывающая, какие начинки были выбраны для конкретной пиццы в заказе.

class PizzaOrdersToppings < ActiveRecord::Base 
    belongs_to :pizza_orders 
    belongs_to :topping 
end 

Затем у меня есть страница администратора, чтобы создать и связать пиццу и начинку.

Но я не знаю,

1. Как создать форму заказов.

Пользователь должен иметь возможность добавить пиццу и выбрать один или несколько начинки, которые уже созданы

Пожалуйста, помогите мне с этим. Застрял за дни

ответ

2

Его немного старый скринкаст Nested model form part 1, сделанный ryan bates, но я надеюсь, что он вам поможет, также есть пересмотренная версия этого скринкаста.

+0

это не будет работать, Райана создает новые вопросы и ответы. Я просто хочу добавить вопросы и ответы на заказ, который не создается. – carbonr

1

Извините, что опоздал, чтобы ответить.

Хорошо, не проверили это, но надеемся, что это даст вам эту идею. Для того, чтобы он работал, этот пример основан на,

  1. simple_form
  2. Райн Бейтс динамическая вложенная форма

Я должен извиниться, что этот ответ отсутствует большая часть его, вы необходимо повторно отобразить компонент link_to_add_fields каждый раз, когда вы изменяете значение <% = f.association: pizzas%>, чтобы скрытое поле, содержащее начинки, соответствовало выбранной пицце.

Извините, я не смог довести вас до конца, но я надеюсь, что это укажет вам в правильном направлении.

_form.html.erb

<%= simple_form @order do |f| %> 

    <%= f.simple_fields_for :pizza_orders do |pizza_orders_fields| %> 
    <%= f.association :pizzas %> 
    <%= render partial: "pizza_order_fields", locals: {f: pizza_orders_fields}%> 
    <%= link_to_add_fields "Add", f, :pizza_orders %> 
    <% end %> 
<% end %> 

pizza_order_fields.html.erb будет выглядеть

<fieldset> 
    <%= f.hidden_field :_destroy %> 
    <%= link_to "Delete", '#', class: "remove_fields btn btn-danger" %> 
    <%= f.association toppings_pizza_orders, collection: f.object.pizza.toppings %> 
</fieldset> 
Смежные вопросы