2011-02-10 2 views
0

У меня есть класс модели «рынок», который имеет много продуктов: модельДобавить строки динамически (Каждая строка представляет собой связанный экземпляр объекта)

class Market < ActiveRecord::Base 
    has_many :products 
end 

продукта:

class Product < ActiveRecord::Base 
    belongs_to :market 
end 

В моих взглядах рынков /new.html.haml и markets/edit.html.haml Я хотел бы иметь функцию, что новый/редактируемый рынок находится в форме, и внутри этой формы у меня есть «» Добавить продукт ", когда пользователь нажимает эту кнопку, одна строка будет добавлена ​​в форме, подобной этому (каждая строка является экземпляром продукта и каждое поле ввода является атрибутом Product (название, цена, категория)), в HTML код:

<div> 
    <input type=text name="name" size=10 value="Name"> 
    <input type=text name="price" size=10 value="Price"> 
    <input type=text name="category" size=10 value="category"> 
<div> 

<div> 
    <input type=text name=z3 size=10> 
    <input type=text name=z3 size=10> 
    <input type=text name=z3 size=10> 
<div> 
...When "Add product" button pressed, a new row of product input fields (div block) is added 
<br> 
<input type="submit" name="Add" value="Add product"> 

Как реализовать эту функцию «динамически добавляя ряд продуктов» в форме «Рынок»?

В файле представления Haml:

=form_for :market do |form| 
... 
    =fields_for "product" market.product do |field| 
    =fields.text_field :name 
    =fields.text_field :price 
    =fields.text_field :category 
    /...When "Add product" button pressed, a new row of product input fields is added 
    =field.submit "Add product" 
form.submit "Save" 

Как реализовать, если я использую этот Haml файл для нового вида рынка/редактирования?

ответ

2

Что вам нужно, это вложенные атрибуты для. Это немного долгого чтения, но вот ссылка на railscast:

http://railscasts.com/episodes/75-complex-forms-part-3

Это обновленный railscast для рельсов 3:

http://railscasts.com/episodes/196-nested-model-form-part-1 то будет в 2-х частях :)

Если вы хотите сразу же погрузиться в код: https://github.com/ryanb/railscasts-episodes/tree/master/episode-196

+0

Вы пробовали его в Rails 3? – Mellon

+0

yup Я попробовал это в rails 3. Я обновил свой ответ для более подходящей ссылки (для рельсов 3) – corroded

+0

Отличные ссылки. Спасибо, вы прорвались, я попробую;) – Mellon

Смежные вопросы