有没有办法在 Rails 4 中的一个 form_for 中拥有多个不同的模型?
也许是这样的
# gives error
<%= form_for ([@user, @pet]), url: some_path do |u, p| %>
最佳答案
通常类似的事情是通过两个模型的关联来完成的。在这种情况下,我将在这里做出一些假设。我假设您有两个模型 user
和 pet
。我假设宠物
属于用户
,并且用户
可以拥有许多宠物
。通过这种关联,pet
模型将具有一个 user_id
属性,用于将用户与该宠物关联起来。
用户模型
attr_accessible :name, :pets_attributes
has_many :pets
accepts_nested_attributes_for :pets
宠物模型
attr_accesible :user_id, :name
belongs_to :user
就我个人而言,我非常喜欢使用 simple_form
,因为它具有很酷的关联功能。
查看
<% simple_form_for @user do |f| %>
<%= f.input :name %>
<%= f.simple_fields_for :pets do |p| %>
<% p.input :name %>
<% end %>
<% end %>
Controller
在您的 Controller 中(假设这是一个新
操作)。这将为用户创建一条线并为宠物构建三个点。
def new
@user = User.new
3.times do
@user.pets.build
end
end
路线
对于路由,您可能需要考虑的一件事是将它们设置为与此类似。这将使您的路线变得更漂亮,因为宠物表演操作也会引用用户 /users/:user_id/pets/:pet_id
resources :users do
resources :pets
end
关于ruby-on-rails - Rails form_for 多个不同的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192495/