在rails中嵌套form_for

时间:2016-08-19 10:56:29

标签: ruby-on-rails-4 nested-form-for

我有Test模型和User模型。 Test模型有很多users。测试控制器如下。

class TestController
   def create
      Test.create(testparams)
   end

   private
   def testparams
      params.require(:test).permit(:test_name,user_attributes:[:user_name])
   end
end

在上面的代码中,将创建新的Test。我想为现有的测试创建新用户。怎么做?

1 个答案:

答案 0 :(得分:2)

您应该能够应用相同的原则。以下是一个基本框架,您必须根据自己的要求进行更改。

测试模型

accepts_nested_attributes_for :users, allow_destroy: true

tests_controller

def edit
  @test = Test.find(params["id"]
  @test.users.build
end

def update
  @test = Test.find(params["id"]
  @test.update(testparams)
end

测试视图

<%= form_for @test do |f| %>
  <%= f.text_field :test_name %>

  <%= f.fields_for :users do |uf| %>
    <%= uf.text_field :user_name %>
  <% end %>
<% end %>