Don*_*ham 45 forms nested-forms ruby-on-rails-3
在我的第一个rails应用程序中,我正在尝试使用form_for并fields_for创建嵌套对象表单.到目前为止一直很好,但我无法弄清楚如何在fields_for块中访问子对象.我已经在子对象中预先填充了一个字段,其中包含我想在用户指令中显示的数据.
车库模型
:
has_many :cars, :dependent => :destroy
accepts_nested_attributes_for :cars
Run Code Online (Sandbox Code Playgroud)
汽车:
belongs_to :garage
Run Code Online (Sandbox Code Playgroud)
车库控制器
def new
@garage = Garage.new
for i in 1..5
@garage.cars.build :stall_number => i
end
end
Run Code Online (Sandbox Code Playgroud)
_form.html.erb
<%= form_for @garage do |f| %>
<%= f.label :title, "Garage Name" %><br />
<%= f.text_field :title %>
<% f.fields_for :cars do |builder| %>
<p>Enter license for car parked in stall: <%= car.stall_number %></p>
<%= f.label :license, "License #:" %><br />
<%= f.text_field :license %>
<%= end %>
<%= end %>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在构建器块中为:cars,我想在我的用户指令中显示以下字段:( car.stall_number在我的控制器中填充整数):
<p>Enter license for car parked in stall: <%= car.stall_number%></p>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了许多不同的想法:@car.stall_number,object.car.stall_number等,没有喜悦.多次搜索和查看fields_for源代码并没有帮助我理解.我很感激任何指导.
更新:为了澄清,根据丹的建议,我已经尝试了builder.stall_number但是它导致了一个
NoMethodError: undefined method 'stall_number' for #<ActionView::Helpers::FormBuilder:0x00000102a1baf0>
Run Code Online (Sandbox Code Playgroud)
Cha*_*zak 81
我今天刚刚处理了这个问题.
您可以通过以下方式访问fields_for的对象:
builder.object
Run Code Online (Sandbox Code Playgroud)
其中builder是您的fields_for表单构建器对象.在您的特定情况下,您可以说:
<p>Enter license for car parked in stall: <%= builder.object.stall_number%></p>
Run Code Online (Sandbox Code Playgroud)
那应该为你做!
| 归档时间: |
|
| 查看次数: |
26090 次 |
| 最近记录: |