我一直关注这个railscast http://media.railscasts.com/videos/074_complex_forms_part_2.mov
我有一个任务和步骤 . 每项任务都可以有很多步骤 .
我正在尝试通过单击链接添加嵌套表单 . railscast显示的内容与我所拥有的内容之间的区别在于我的步骤控制器中有我的步骤形式,但这应该不是问题 .
我也在使用带有jQuery的rails3,但是还没有看到有关如何在rails3中执行此操作的任何教程 .
我的任务/ new.html.erb
<%= form_for @task, :html=>{:multipart => true do |f| %>
<%= render 'form', :f=>f %>
< end >
为我的任务/ _form.html.erb
<%= f.label :task_name %>
<%= f.text_field :task_name %>
<%= f.label :media %>
<%= f.file_field :media %>
< div id="steps" >
<%= render 'steps/form', :f=> f % >
< /div>
<%= link_to_function "Add Step" do |page|
page.insert_html :bottom, :steps, :partial=>'steps/form', :object => Step.new end %>
<%= f.submit %>
步骤/ form.html.erb
<p class="fields">
<%= fields_for :steps do |builder| %>
<%= builder.label :title >
<%= builder.text_field :title >
<%= builder.label :description %>
<%= builder.text_area :description %>
<% end %>
</p>
页面加载正常,但是当我点击“添加步骤链接”时,我收到两个javascript错误 .
RJS error:
TypeError: Element.insert is not a function
然后
Element.insert("steps", {bottom: "<p class=\"fields\">\n\t</p>\t"});
2 回答
link_to_function在rails3中不再有效 .
我做的是1)看这个截屏http://railscasts.com/episodes/205-unobtrusive-javascript
而不是'link_to_function,我现在有
然后我有一个content_for来处理和显示javascript(jQuery)
这是将表单添加到页面,但并不是全部连接,因为渲染没有将步骤连接到任务 . 还不完全确定如何编写它,但表单现在正被添加到页面中,它将无法正确提交 .
你应该试试这个宝石https://github.com/ryanb/nested_form,这样就可以更容易地设置它而不会有任何麻烦 . 您是否还使用http://railscasts.com/episodes/196-nested-model-form-part-1和http://railscasts.com/episodes/197-nested-model-form-part-2查看了Rail-casts . 这些是复杂形式的全新形式,而不是它的嵌套模型,同样的东西 .
摆脱所有'h'并确保将应用程序助手底部的Jquery行更改为:
这个主题可以指导你:rails fields_for render partial with multiple locals producing undefined variable
另请阅读Rails演员表的评论区域,因为他们通常一直都有更新的代码 .