【问题标题】:Adding dynamic fields to nested form through AJAX通过 AJAX 向嵌套表单添加动态字段
【发布时间】:2013-03-22 10:48:11
【问题描述】:

我一直在我的应用程序上观看和复制这些 railscast:196-nested-model-form-part-1197-nested-model-form-part-2。我还没有专业帐户,所以我无法观看修改后的剧集。

我正在 rails4 (edge) 下开发,link_to_function 已被弃用,取而代之的是不引人注目的 JS(这很棒)。

我将保留上述 railscasts 的示例(即调查/问题)。 我想做的是通过不显眼的javascript使用问题的部分内容,我只是不知道我应该如何以及在哪里这样做。

我正在考虑两种方法:

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

我不禁想到一定有更好的方法来做到这一点。

【问题讨论】:

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


    【解决方案1】:

    您知道远程链接和表单吗?你可以在这里使用远程链接来完成你想要的。

    在你看来:

    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

    【讨论】:

    • 谢谢@Arjan。这确实是我在我的 SurveyController 中创建一个新操作的意思,但由于我上面解释的原因,我不太确定这样做。但是,您的解决方案似乎干净干燥。找不到其他解决方案,我可能会这样做。
    • 为什么&lt;%=j render partial里面有个j
    • @Clam jescape_javascript javascript 助手的别名。 api.rubyonrails.org/classes/ActionView/Helpers/…
    • 它是否适用于嵌套表单元素?表单的对象必须在某处传递。它似乎没有回答所问的问题
    【解决方案2】:

    我也没有 Railscasts 的专业帐户,但有时看看 Ryan's Github account 是个好主意。他经常为他在剧集中所涵盖的内容开发宝石。在那里你会发现这个很棒的nested_form gem,它完全符合你的要求。

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

    【讨论】:

    • 谢谢@Charles。我确实找到了nested_form gem,但我没有尝试它,因为它需要使用nested_form_for,而我已经在使用simple_form。我不太确定我可以同时使用两者。
    • 是的,你可以。只需使用simple_nested_form_for。查看this
    • 这就是我所追求的。我知道有专业帐户,所以我可以观看修改后的剧集。
    • 看起来构建当前失败,我看不到对 bootstrap_form_for 的支持。还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多