2013-02-28 3 views
0

Я хочу показать новый объект и каждую из иллюстраций, связанных с ним на веб-странице. 1. Я не знаю, как правильно писать код, чтобы получить связанные иллюстрации романа. 2. Я не знаю, как правильно ссылаться на атрибут объектов иллюстрации. 3. Я думаю, что моя ошибка может быть от чего-то несвязанного.Rails - Как перебирать связанные объекты?

Novel Модель:

Class Novel < ActiveRecord::Base 
    has_many :illustrations 
    attr_accessible :id, :name, :author, :edition, :publisher, :publication_city, :publication_date, :illustrations 
    validates :id, uniqueness: true, presence: true 
    validates :name, :author, :edition, :publisher, :publication_city, :publication_date,  presence: true 
end 

Иллюстрация Модель:

class Illustration < ActiveRecord::Base 
    belongs_to :novel 
    attr_accessible :id, :illustrator, :image_url, 
    :image_thumbnail_url, :name, :source, :tags, 
    :description, :novel_id 
    validates :id, uniqueness: true 
    validates :name, :source, presence: true 
    validates :image_url, 
    format: { with: %r{\.{gif|.jpg|.png}\Z}i, 
    message: 'must be a URL for .gif, .jpg, or .png'} 
    validates :image_thumbnail_url, 
    format: { with: %r{\.{gif|.jpg|.png}\Z}i, 
    message: 'must be a URL for .gif, .jpg, or .png'} 
    validates :illustrator, :tags, :description, presence: true 
end 

Новый класс индекс:

<% if notice %> 
<p id="notice"><%= notice %></p> 
<% end %> 

<h1 style="padding-left:25px">Archive Overview</h1> 

<% @novels.each do |novel| %> 
<%= illustrations = novel.map(&:illustration) %> 
<div class="row"> 
    <div class="span3" style="padding:0px 0px 25px 25px"> 
     <%= link_to novel.name, novel %> 
    </div> 
    <div class="span4"> 
     <p><%= novel.author%></p> 
     <p><%= novel.publisher %></p> 
     <p><%= novel.publication_date %></p> 
    <div class="span5"> 
     <ul>  
      <% for illustrations.each do |illustration| %> 
      <li><%= illustration.name %></li> 
      <% end %> 
     </ul> 
    </div> 
    </div> 
</div> 
<% end %> 

Я получаю ошибку с любой комбинацией для синтаксиса цикла на illustrations.each :

SyntaxError in Booklist#index 

Showing /home/joe/Documents/workspace/archive/app/views/booklist/index.html.erb where line #21 raised: 

/home/joe/Documents/workspace/archive/app/views/booklist/index.html.erb:21: syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.' 
Extracted source (around line #21): 

18:    <ul>  
19:     <% for illustrations.each do |illustration| %> 
20:     <li><%= illustration.name %></li> 
21:     <% end %> 
22:    </ul> 
23:   </div> 
24:   </div> 
Trace of template inclusion: app/views/booklist/index.html.erb 

Rails.root: /home/joe/Documents/workspace/archive 

ответ

2

Вы смешиваете синтаксис for, который редко применяется для каждого метода. Вы должны сделать это следующим образом:

<% illustrations.each do |illustration| %> 
    <li><%= illustration.name %></li> 
<% end %> 
Смежные вопросы