Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 以新形式添加来自不同模型的输入_Ruby On Rails_Simple Form - Fatal编程技术网

Ruby on rails 以新形式添加来自不同模型的输入

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

我与照片和赞助商有很多关系

创建新照片时,在new.html.erb视图中,我想添加赞助商属性(属于不同的模型,但与照片相关),但我不知道如何添加

我想在照片创建视图中添加:赞助商名称,:赞助商网站输入,这样我可以在创建新照片时添加照片中赞助商的信息

我尝试在同一个视图中创建两个简单的表单,一个具有照片表属性,另一个具有赞助商属性,但没有成功

Mi视图(new.html.erb)


嵌套的

您需要在您的
照片中使用:

#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 %>