0

小説を一覧表示するページがあり、関連する各イラストのサムネイルを表示したいと思います。関連付けられた各イラストレーション オブジェクトに相当する toString を表示できるので、関連付けが機能していることがわかります。イラストのリストを反復しようとすると、次のようになります。

undefined method `image_thumbnail_url' for #<ActiveRecord::Relation:0x007f023c07aa18>

コードは次のとおりです。

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

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

<% @novels.each do |novel| %>
<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>
    <div class="span5">
        <div style="display: none;"><%= illustrations = @novels.map{ |novel| novel.illustrations} %>
        </div>
        <ul>    
            <% illustrations.each do |illustration| %>
            <li><%= illustration.image_thumbnail_url %></li>
            <% end %>
        </ul>
    </div>
</div>
4

1 に答える 1

2

コードで非常に奇妙なことをしています。まず、コードを表示せずに実行したい場合は、<% ... %>代わりに<div style="display: none;"><%= ... %></div>.

実際の問題は次のとおりです。

illustrations = @novels.map{ |novel| novel.illustrations }

これを行うと、イラスト オブジェクトの配列ではなく、イラスト オブジェクトのコレクションの配列が取得されます。コレクションにはメソッドがありませんimage_thumbnail_url

あなたはすでに小説を反復しているので、単純にこれを行うことをお勧めします:

<div class="span5">
  <ul>    
  <% novel.illustrations.each do |illustration| %>
    <li><%= illustration.image_thumbnail_url %></li>
  <% end %>
  </ul>
</div>
于 2013-03-02T15:00:41.440 に答える