Javascript 动态添加嵌套表单
我一直在跟踪这个火车司机 我有一个任务和步骤。每个任务可以有许多步骤 我试图通过单击链接添加嵌套表单。 railscast显示的内容与我拥有的内容之间的区别在于,我已经在我的steps控制器中设置了我的steps表单,但这不应该是一个问题 我还将rails3与jQuery结合使用,但还没有看到任何关于如何在rails3中实现这一点的教程 我的任务/new.html.erb <%= form_for @task, :html=>{:multipart => true do |f| %> <%= render 'form', :f=>f %> < end > {:multipart=>true do | f |%> f%>Javascript 动态添加嵌套表单,javascript,ruby-on-rails-3,nested-forms,Javascript,Ruby On Rails 3,Nested Forms,我一直在跟踪这个火车司机 我有一个任务和步骤。每个任务可以有许多步骤 我试图通过单击链接添加嵌套表单。 railscast显示的内容与我拥有的内容之间的区别在于,我已经在我的steps控制器中设置了我的steps表单,但这不应该是一个问题 我还将rails3与jQuery结合使用,但还没有看到任何关于如何在rails3中实现这一点的教程 我的任务/new.html.erb <%= form_for @task, :html=>{:multipart => true do |f| %&
f%>
'步骤/形式',:object=>Step.new end%>
<%=f.提交%>
步骤/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 %>
<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 RJS错误: TypeError:Element.insert不是函数 然后 元素。插入(“步骤”,{bottom:
\n\t
\t});“链接到”功能在rails3中不再有效 我所做的是 1) 看这个电影 我现在使用的不是“link\u to\u”函数 <% link_to "Add Step", @step, :remote=>true, :class=>'addStep'%> true,:class=>'addStep'> 然后我有了一个用于处理和显示javascript的内容(jQuery) $('a.addStep')。单击(函数(){ $('div#newStep').html(“”); })
这是在将表单添加到页面中,但由于呈现未将步骤连接到任务,因此尚未完全连接。还不完全确定如何编写该步骤,但表单现在正在添加到页面中,它无法正确提交。您应该试用此gem,以便更轻松地设置它,而不会遇到任何麻烦。您是否也检查了ut轨道铸件和。这些是全新的复杂形式,而不是它的嵌套模型,同样的事情 去掉所有的“h”,并确保将应用程序帮助程序底部的Jquery行更改为:
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
此线程可以指导您:
另外,请阅读Rails强制转换的注释区域,因为它们通常会一直更新代码。Rails3中似乎不推荐使用link\u to\u函数。我还不确定如何编写此函数,但我正在研究它,并将在此处发布答案(除非有人告诉我)。