显示在嵌套展示页

时间:2017-04-22 02:20:01

标签: ruby-on-rails

我有一个奇怪的问题,我似乎无法弄清楚也不知道如何谷歌。

让我在进入代码之前解释错误是什么。

我有一张专辑,里面有很多照片(照片属于专辑)。

相册效果很好。照片很好。

当我尝试点击照片的显示链接时...这似乎是侧面的事情,即,在第一个之后它们都不起作用。

有什么想法吗?如果需要进一步的信息,请告诉我。

问题似乎来自我的展示动作的照片控制器,即:

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

1 个答案:

答案 0 :(得分:1)

在我看来,你发布照片的link_to缺少相册的ID。

而不是

<%= link_to 'Show', album_photo_path(photo) %>

应该是

<%= link_to 'Show', album_photo_path(@album, photo) %>

因为它看起来像:期望albu​​m_id作为照片的单独参数:id。