创建多个表单而不会使控制器充满新对象

时间:2013-08-13 21:50:52

标签: ruby-on-rails ruby ajax forms

如何创建多个表单而不必在控制器中创建对象/通过ajax加载它们?

假设你有一个论坛模型,其中有很多帖子,每个帖子都有很多标记。您正在查看forms_controller#index的帖子列表。

假设您要允许用户标记来自同一模板的帖子。一种方法是在需要时通过远程链接加载表单。

# forums/index.html
= link_to "Add Tag", new_post_tag_path, remote: true

# tags_controller.rb
def new
  @tag = @post.tags.build
  respond_to do |format|
    format.js
  end
end

# tags/new.js.erb
<%= j render("form") %>

但是这需要转到服务器并再次返回以呈现表单。

另一种方法是在循环帖子时创建对象。

- @posts.each do |post|
  = form_for @post.tags.build do

如果您想同时创建多个标签,那么效果不会很好。

有没有其他方法可以使用JS,而不必像第二种方法那样去服务器/或创建对象?

1 个答案:

答案 0 :(得分:0)

Ryan Bates在这个主题上做过精彩的截屏。 http://railscasts.com/episodes/197-nested-model-form-part-2希望这能为您提供所需的一切。