Rails嵌套的属性不显示在SHOW /不保存父母的ID
当我们看到嵌套参数和他们的控制器时,我似乎无法得到路线的hang hang。后来编辑 - 航线看起来很好,但PARENT_ID不保存Rails嵌套的属性不显示在SHOW /不保存父母的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
在我画廊的形式中,我看到所有画廊列值都很好。 现在我想显示其专辑这样的首发名单,但没有显示出来:
<% @gallery.albums.each do |album| %>
<%= album.name %>
<%= link_to "Destroy", album, method: :delete %>
<% end %>
原来,画廊的PARENT_ID当我创建一个新的专辑没有被保存
我把相册创建这样
<%= link_to 'New Album', new_gallery_album_path(@galleries.id) %>
导致这个网址http://localhost:3000/galleries/1/albums
我并不完全相信从创建定义缺失为了要保存的gallery_id当我申请@ Esther的建议
画廊之前保存的专辑
后来编辑
控制台加载(1.0ms)SELECT“galleries”* FROM“galleries”WHERE “galleries”。“id”= $ 1 LIMIT $ 2 [[“id”,1],[“LIMIT”,1]](0.0ms) BEGIN SQL(0.0ms)INSERT INTO“albums”(“band”,“gallery_id”, “created_at”,“updated_at”)VALUES($ 1,$ 2,$ 3,$ 4)RETURNING“i d“ [[”ban d“,”test“],[”gallery_id“,1],[”created_at“,”2017-09-18 21:09:59.805397“],[”updated_at“,”2017 -09-18 21:09:59.805397" ]]
(0.0ms)COMMIT(0.0ms)BEGIN
以及修改所述控制器后使用@gallery.albums.create(album_params)
代替@gallery.albums.create
廊负荷( (0.0ms)SELECT“galleries”。* FROM“galleries”WHERE “galleries”。“id”= $ 1 LIMIT $ 2 [[“id”,1],[“LIMIT”,1]] (0.0ms)BEGIN SQL(1.0ms)INSERT INTO“albums”(“band”,“gallery_id”,“created_at”,“updated_at”)VALUES($ 1,$ 2,$ 3,$ 4)RETURNING“id” [[“ban d”, “new”],[“gallery_id”,1],[“created_at”,“2017-09-19 18:28:41.093138”],[“updated_at”,“2017-09-19 18:28:41.093138”] ] (0.0ms)COMMIT (0.0ms)BEGIN (1.0ms的)COMMIT (0.0ms)BEGIN
通过“parent_id不保存”,你的意思是gallery_id
没有被保存到album
?
如果是的话,我的第一个想法是我认为你应该将你的相册创建方法中的这一行代码从@album = @gallery.albums.new(album_params)
更改为@album = @gallery.albums.create(album_params)
。这会立即创建带有album_params
中现有参数的相册,我希望在您继续将相片添加到相册之前,其中包含gallery_id
。第二,你能否用控台上的日志更新你的问题,以便我们确认album_params
中的内容。
看起来对我来说有没有与此相关的画廊任何专辑记录。您可以通过打印计数或使用调试语句进行确认。
# Example:
There are <%= @albums.count %> albums associated with this gallery.
# For debugging only:
<%= debug @albums %>
你也可以在控制台中看到这个。
@gallery.albums.count
@gallery.albums.any?
如果你觉得有什么出错,你可以在数据库中检查记录直接(运行rails db
使用相同的凭据连接到数据库),然后您可以执行SQL:
SELECT COUNT(*) FROM albums WHERE gallery_id = 1;
谢谢@esther 不知道创建就是这样,但现在我也学到了这一点。 – Andrea