我已经为这个问题苦苦挣扎了将近一个月,似乎无法弄清楚。我对 RoR 相当陌生,并且确信我忽略了一些基本的东西......非常感谢帮助!
我有三个相互嵌套的资源:(1)书籍,(2)章节,(3)页面。Page 模型通过回形针 gem 具有图像属性。
每个模型如下:
class Book < ActiveRecord::Base
attr_accessible :synopsis, :title
has_many :chapters
class Chapters < ActiveRecord::Base
attr_accessible :synopsis, :title
belongs_to :book
has_many :pages
class Pages < ActiveRecord::Base
attr_accessible :page_image, :page_number
has_attached_file :page_image, styles: { medium: "1024x768>", thumb: "300x300>" }
belongs_to :chapter
如您所见,每个页面都有一个图像。在图书展示页面中,我希望有一个部分显示属于该图书的所有章节,每个章节的链接将是属于该章节的第一页的图像。
图书控制器:
class BookController < ApplicationController
...
def show
@book = Book.find(params[:id])
@chapters = @book.chapters.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: @book }
end
end
...
图书展示视图:
<ul class="thumbnails">
<% @chapters.each do |chapter| %>
<li class="span3">
<div class="thumbnail">
<%= image_tag chapter.pages.first.page_image %>
</div>
</li>
<% end %>
</ul>
这是我得到的错误:
undefined method `page_image' for nil:NilClass
Extracted source (around line #5):
2: <% @chapters.each do |chapter| %>
3: <li class="span3">
4: <div class="thumbnail">
5: <%= image_tag chapter.pages.first.page_image %>
6: