使用嵌套模型的 2.3.x+ rails 功能,我认为我需要访问表单构建器实例来正确指定用于渲染嵌套模型的部分。从复杂形式示例中提取:
例如,这是一个封闭的表单,它创建表单构建器并将其传递给嵌套模型渲染视图:
<div class="children_fields tasks" id="<%= dom_id(f.object) %>_tasks"
data-context="<%= f.object_name %>">
<% f.fields_for :tasks do |task_form| %>
<%= render :partial => 'task', :locals => { :f => task_form } %>
<% end %>
</div>
部分任务是:
<%= f.label :name, "Task" %>
<%= f.text_field :name %>
<%= remove_child_link "remove", '#', f %>
<div class="children_fields assignments" id="<%= dom_id(f.object) %>_assignments"
data-context="<%= f.object_name %>">
<% f.fields_for :assignments do |assignment_form| %>
<%= render :partial => 'assignment', :locals => { :f => assignment_form } %>
<% end %>
</div>
当我尝试像这样指定一个部分时,我尝试通过执行以下操作将表单构建器作为实例变量捕获:
before(:each) do
... # setup for target object
form_for [:foo, :bar, @project] do |f|
@f = f
end
end
这会在使用 form_for 时引发错误
undefined method `polymorphic_path' for #<Spec::Rails::Example::ViewExampleGroup::Subclass_1:0x2cfeafc>
/Users/adamaig/.rvm/gems/ruby/1.8.7/gems/actionpack-2.3.5/lib/action_controller/test_process.rb:511:in `method_missing'
/Users/adamaig/.rvm/gems/ruby/1.8.7/gems/actionpack-2.3.5/lib/action_view/helpers/form_helper.rb:298:in `apply_form_for_options!'
/Users/adamaig/.rvm/gems/ruby/1.8.7/gems/actionpack-2.3.5/lib/action_view/helpers/form_helper.rb:272:in `form_for'
那么,正确的方法是:1)为这样的规范获取 FormBuilder 实例?2)规范嵌套模型及其视图形式?
这对于正确的名称生成很重要。