Ruby on rails Rails嵌套属性未显示在显示/不保存父id中

Ruby on rails Rails嵌套属性未显示在显示/不保存父id中,ruby-on-rails,controller,nested-forms,Ruby On Rails,Controller,Nested Forms,当涉及到嵌套参数和它们的控制器时,我似乎无法掌握路由的诀窍。稍后编辑-路由看起来很好,但未保存父\u id 在我的路线上,我有 resources :galleries do resources :album end 然后显示在控制器中 def show @albums = Album.find(params[:id]) @photos = @albums.photos.all end def index @albums = Album.includes(

当涉及到嵌套参数和它们的控制器时,我似乎无法掌握路由的诀窍。稍后编辑-路由看起来很好,但未保存父\u id

在我的路线上,我有

   resources :galleries do
     resources :album
   end
然后显示在控制器中

def show
  @albums = Album.find(params[:id])
  @photos = @albums.photos.all

end

def index
  @albums = Album.includes(:photos).all


end

def new
   @gallery = Gallery.find(params[:gallery_id])
   @album = @gallery.albums.build
   @photos = @album.photos.build
end

def create
   @gallery = Gallery.find(params[:gallery_id])
   @album = @gallery.albums.new(album_params)

   respond_to do |format|
     if @album.save
       params[:photos]['image'].each do |a|
          @photo = @album.photos.create!(:image => a, :album_id => @album.id)
       end
       format.html { redirect_to gallery_path(@gallery.id), notice: 'Post was successfully created.' }
模型是这样的

class Album < ApplicationRecord
  belongs_to :gallery
  has_many :photos
  accepts_nested_attributes_for :photos
end

class Gallery < ApplicationRecord
  has_many :albums
  accepts_nested_attributes_for :albums
end
classalbum
在我的图库表单中,我可以看到所有图库列的值。 现在,我正试图为初学者展示一张这样的专辑列表,但什么都没有显示:

<% @gallery.albums.each do |album| %>   
  <%= album.name %>
  <%= link_to "Destroy", album, method: :delete %>
<% end %>

结果是,在我创建新相册时,没有保存库的父\u id

我这样称呼专辑创作

class Album < ApplicationRecord
  belongs_to :gallery
  has_many :photos
  accepts_nested_attributes_for :photos
end

class Gallery < ApplicationRecord
  has_many :albums
  accepts_nested_attributes_for :albums
end

这导致了这个url

我不确定在保存相册时,为了保存gallery_id,创建定义中缺少了什么

后期编辑

在应用@Esther的建议之前进行安慰

库加载(1.0ms)从“库”中选择“库”。*其中 “画廊”。“id”=$1限制$2[[“id”,1],“限制”,1]](0.0ms) 开始SQL(0.0ms)插入“相册”(“乐队”、“画廊id”), “created_at”、“updated_at”)值($1、$2、$3、$4)返回“id” [[“禁令d”,“测试”],[“画廊id”,1],“创建于”,“2017-09-18 21:09:59.805397“,[“更新日期”,“2017-09-18 21:09:59.805397”]
(0.0ms)提交(0.0ms)开始

修改控制器以使用
@gallery.albums.create(album_params)
而不是
@gallery.albums.create

库加载(0.0ms)从“库”中选择“库”。*其中 “画廊”。“id”=$1限额$2[[“id”,1],“限额”,1]] (0.0毫秒)开始 SQL(1.0ms)插入“相册”(“乐队”、“画廊id”、“创建时间”、“更新时间”)值($1、$2、$3、$4)返回“id” [[“禁止 “新的”],[“画廊id”,1],“创建于”,“2017-09-19 18:28:41.093138”],[“更新于”,“2017-09-19 18:28:41.093138”] (0.0ms)提交 (0.0毫秒)开始 (1.0ms)提交 (0.0毫秒)开始


在我看来,没有任何与此库关联的唱片集记录。您可以通过打印计数或使用调试语句进行确认

# Example:
There are <%= @albums.count %> albums associated with this gallery.

# For debugging only:
<%= debug @albums %>
如果您认为有问题,可以直接检查数据库中的记录(运行
rails db
以使用相同的凭据连接到数据库),然后执行SQL:

SELECT COUNT(*) FROM albums WHERE gallery_id = 1;

在我看来,没有任何与此库关联的唱片集记录。您可以通过打印计数或使用调试语句进行确认

# Example:
There are <%= @albums.count %> albums associated with this gallery.

# For debugging only:
<%= debug @albums %>
如果您认为有问题,可以直接检查数据库中的记录(运行
rails db
以使用相同的凭据连接到数据库),然后执行SQL:

SELECT COUNT(*) FROM albums WHERE gallery_id = 1;
“家长id未保存”是指
gallery\u id
未保存到
album

如果是,我的第一个想法是,我认为您应该将相册创建方法中的这行代码从
@album=@gallery.albums.new(album_参数)
更改为
@album=@gallery.albums.create(album_参数)
。这会立即使用
album_params
中的现有参数创建相册,我希望在将照片添加到相册之前,该相册中包含
gallery_id

第二,请您使用控制台中的日志更新您的问题,以便我们可以通过“未保存家长id”确认
相册参数中的内容,您的意思是
相册id
未保存到
相册中吗

如果是,我的第一个想法是,我认为您应该将相册创建方法中的这行代码从
@album=@gallery.albums.new(album_参数)
更改为
@album=@gallery.albums.create(album_参数)
。这会立即使用
album_params
中的现有参数创建相册,我希望在将照片添加到相册之前,该相册中包含
gallery_id


其次,请您使用控制台中的日志更新您的问题,以便我们确认
相册参数中的内容

谢谢@coreyward我看到它们是使用该相册id创建的,但选择后它们实际上不会显示。因此,在我的创建/路径中还有一些其他内容。那我去看看。也谢谢你的格式。也掌握了窍门谢谢@coreyward我看到他们用这个画廊id创建,但选择后他们确实没有出现。因此,在我的创建/路径中还有一些其他内容。那我去看看。也谢谢你的格式。谢谢你,埃丝特没有意识到创造是这样的,但是现在我也学会了这个。谢谢你,埃丝特没有意识到创造是这样的,但是现在我也学会了这个。