通过AJAX将动态字段添加到嵌套表单

我一直在观看和重现我的应用程序上的这些railscast: 196-nested-model-form-part-1和197-nested-model-form-part-2 。 我还没有亲专业账户,因此我无法观看修订后的剧集。

我正在rails4(edge)下开发,并且不推荐使用link_to_function而转而使用unobtrusive JS(这很棒)。

我将保留上述railscast的示例(即调查/问题)。 我想做的是使用问题的部分通过不引人注目的JavaScript,我只是不知道我应该怎么做以及在哪里做到这一点。

我想到了两种方法:

  • 第一种方法是在我的app/assets/javascripts一个带有函数add_question的文件add_question但我不知道如何从这里使用我的部分。
  • 其他方法是在我的SurveyController中创建一个新的动作,该动作将使用部分问题进行响应,但我对调查控制器中的问题特定于行动的事实感到困扰。

我不禁认为必须有更好的方法来做到这一点。

我也没有关于Railscasts的专业帐户,但有时候看看Ryan的Github帐户是个好主意。 他经常将gem发展成他在剧集中所涵盖的内容。 在那里你会发现这个非常棒的nested_form gem,它可以完全满足您的需求。

当然你可以重新发明轮子,但我认为使用Ryan的gem更加容易和快捷。 该文档完美地解释了如何使用它。 玩得开心!

你知道远程链接和表格吗? 您可以在此处使用远程链接来完成您想要的任务。

在你看来:

 link_to 'Add question', add_question_path(@survey), remote: true 

在你的控制器中

 def add_question @survey = Survey.find(params[:id]) respond_to do |format| format.js #add_question.js.erb end end 

最后一步是创建文件app / views / surveys / add_question.js.erb

 $('#my_survey').append('<%=j render partial: 'my_question_partial' %>') 

不要忘记为ask_question_path创建路由

有关远程链接和表单的更多信息,请参阅: http : //tech.thereq.com/post/17243732577/rails-3-using-link-to-remote-true-with-jquery-ujs