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

时间:2013-03-22 10:48:12

标签: ruby-on-rails ajax nested-forms railscasts

我一直在观看并在我的应用上复制这些视频直播:196-nested-model-form-part-1197-nested-model-form-part-2。我还没有亲专业账户,因此我无法观看修改过的剧集。

我正在rails4(边缘)下开发而link_to_function已被弃用,而不赞成不引人注目的JS(这很棒)。

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

我在考虑两种方法:

  • 第一种方法是在我的app/assets/javascripts文件surveys.js中添加函数add_question,但我不知道如何从这里使用我的部分。
  • 其他方式是在SurveyController中创建一个新动作,该动作将使用部分问题作出回应,但我对调查控制器中的问题采取特定行动感到困扰。

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

2 个答案:

答案 0 :(得分:18)

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

在您看来:

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

答案 1 :(得分:9)

我也没有关于Railscasts的专业帐号,但有时候查看Ryan's Github account是个好主意。他经常将宝石发展成他在剧集中所涵盖的内容。在那里你会发现这个令人敬畏的nested_form宝石,它完全符合你的需要。

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