Ruby on rails Rails嵌套属性未显示在显示/不保存父id中
当涉及到嵌套参数和它们的控制器时,我似乎无法掌握路由的诀窍。稍后编辑-路由看起来很好,但未保存父\u 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(
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创建,但选择后他们确实没有出现。因此,在我的创建/路径中还有一些其他内容。那我去看看。也谢谢你的格式。谢谢你,埃丝特没有意识到创造是这样的,但是现在我也学会了这个。谢谢你,埃丝特没有意识到创造是这样的,但是现在我也学会了这个。