我有一个奇怪的问题,我似乎无法弄清楚也不知道如何谷歌。
让我在进入代码之前解释错误是什么。
我有一张专辑,里面有很多照片(照片属于专辑)。
相册效果很好。照片很好。
当我尝试点击照片的显示链接时...这似乎是侧面的事情,即,在第一个之后它们都不起作用。
有什么想法吗?如果需要进一步的信息,请告诉我。
问题似乎来自我的展示动作的照片控制器,即:
# app/controllers/photos_controller.rb
def show
@album = Album.find(params[:album_id])
@photo = @album.photos.find(params[:id])
end
正在生成的错误是:
ActiveRecord::RecordNotFound in PhotosController#show
Couldn't find Album with 'id'=4
奇怪的部分是ablum的第一张照片有效。这是所有其他后续照片不起作用。
这是app/views/photos/show.html.erb
:
<h1>Album Details</h1>
<b><p>Title</p></b>
<p><%= @album.title %></p>
<b><p>Descriptions</p></b>
<p><%= @album.description %></p>
<%= link_to "All Albums", albums_path %>
<h3>Photos</h3>
<% @album.photos.each do |photo| %>
<p>
<b>Title</b>
<%= photo.title %>
<%= link_to 'Show', album_photo_path(photo) %>
</p>
<% end %>
<h3>Add More Photos</h3>
<%= form_for([@album, @album.photos.build]) do |f| %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
答案 0 :(得分:1)
在我看来,你发布照片的link_to缺少相册的ID。
而不是
<%= link_to 'Show', album_photo_path(photo) %>
应该是
<%= link_to 'Show', album_photo_path(@album, photo) %>
因为它看起来像:期望album_id作为照片的单独参数:id。