Ruby on rails 以新形式添加来自不同模型的输入
我与照片和赞助商有很多关系 创建新照片时,在new.html.erb视图中,我想添加赞助商属性(属于不同的模型,但与照片相关),但我不知道如何添加 我想在照片创建视图中添加:赞助商名称,:赞助商网站输入,这样我可以在创建新照片时添加照片中赞助商的信息 我尝试在同一个视图中创建两个简单的表单,一个具有照片表属性,另一个具有赞助商属性,但没有成功 Mi视图(new.html.erb)Ruby on rails 以新形式添加来自不同模型的输入,ruby-on-rails,simple-form,Ruby On Rails,Simple Form,我与照片和赞助商有很多关系 创建新照片时,在new.html.erb视图中,我想添加赞助商属性(属于不同的模型,但与照片相关),但我不知道如何添加 我想在照片创建视图中添加:赞助商名称,:赞助商网站输入,这样我可以在创建新照片时添加照片中赞助商的信息 我尝试在同一个视图中创建两个简单的表单,一个具有照片表属性,另一个具有赞助商属性,但没有成功 Mi视图(new.html.erb) 嵌套的 您需要在您的照片中使用: #app/models/photo.rb class Photo < Act
嵌套的 您需要在您的
照片中使用:
#app/models/photo.rb
class Photo < ActiveRecord::Base
has_many :sponsors
accepts_nested_attributes_for :sponsors
end
这将在创建新的照片
对象时创建新的赞助商
对象,从而为您提供传递嵌套数据的能力
--
虽然这对一个has\u many:通过
关联有效,但在将它与has\u和\u-belies\u-to\u many
一起使用时要小心,就像您只想关联两个模型一样,最好填充新照片
对象的[其他]\u id
方法
如果你想了解更多信息,我可以详细介绍一下小心点,你在混用同一事物的单数和复数名称。如果您想在一个表单中创建或更新多个对象,请参见嵌套的\u属性
。好的,谢谢,请看一下。但是,那些嵌套属性呢?我应该在Photos Controller中添加它们以及强参数吗?谢谢刚开箱即用。完全理解。非常感谢
def new
@photo = Photo.new
@sponsor = @photo.sponsors
end
#app/models/photo.rb
class Photo < ActiveRecord::Base
has_many :sponsors
accepts_nested_attributes_for :sponsors
end
#app/controllers/photos_controller.rb
class PhotosController < ApplicationController
def new
@photo = Photo.new
@photo.sponsors.build
end
def create
@photo = Photo.new photo_params
@photo.save
end
private
def photo_params
params.require(:photo).permit(:photo, :params, sponsors_attributes: [:name, :web])
end
end
#app/views/photos/new.html.erb
<%= form_for @photo do |f| %>
# Photo attributes here
<%= f.fields_for :sponsors do |s| %>
<%= s.text_field :name %>
<%= s.text_field :web %>
<% end %>
<%= f.submit %>
<% end %>