我有一个模型类'Market',它有很多产品:
class Market < ActiveRecord::Base
has_many :products
end
产品型号:
class Product < ActiveRecord::Base
belongs_to :market
end
在我的观点中 markets / new.html.haml 和 markets / edit.html.haml 我想要一个新的/编辑市场的功能在表单中,在此表单中,我有一个“添加产品”按钮,当用户按下此按钮时,将在这样的表单中添加一行(每行是一个实例产品和每个输入字段是产品(名称,价格,类别)的属性),在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文件用于新/编辑市场视图,该如何实现?
答案 0 :(得分:2)
你需要的是一个nested_attributes。这是一个很长的阅读,但这里是railscast的链接:
http://railscasts.com/episodes/75-complex-forms-part-3
这是rails 3的更新railscast:
http://railscasts.com/episodes/196-nested-model-form-part-1分为两部分:)
如果您想立即深入了解代码:https://github.com/ryanb/railscasts-episodes/tree/master/episode-196