2

モーダルを使用して、インデックス ページ内に表示ページをポップアップ表示しています.....表示ページのパーシャルで @product.name を使用し始めるまで、すべて正常に動作します。

次のエラーが表示されます。

undefined method `name' for nil:NilClass

私はそれが簡単な修正であることを知っています、助けてください.... Railsの初心者これは私のコードです:

ビュー

_show.html.erb

<div id="myModal" class="modal hide fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="content-inner hero-unit">
    <h1 class="pump-up center">
      <br>
      <strong>Coming Soon.</strong></h1>
      <br><br>
      <p>
        <b>Name: </b>
        **<%= @product.name %>**
      </p>
  </div>
</div>

index.html.erb

<%= render :partial => "show", :locals => { :product => @product }  %>

<div class="row">
  <% @products.each do |product| %>
      <div class="span3">

        <a href="#myModal" role="button" data-toggle="modal">
        <%=(image_tag product.photo(:medium))%></a>

      </div>
  <% end %>
</div>

モデル

product.rb

class Product < ActiveRecord::Base
  attr_accessible :name, :photo
end

コントローラ

products_controller.rb

class ProductsController < ApplicationController

  def show
    @product = Product.find(params[:id])
  end


  def index
    @products = Product.all
  end

end
4

2 に答える 2

3

アクションでindexテンプレートをレンダリングしているので、スコープはです。各製品のループ内でレンダリング パーシャルを呼び出す必要があります。index@productNil

index.html.erbそのようなものでなければなりません:

<div class="row">
  <% @products.each do |product| %>
      <div class="span3">
        <%= render :partial => "show", :locals => { :product => product }  %>
        <a href="#myModal" role="button" data-toggle="modal">
        <%=(image_tag product.photo(:medium))%></a>

      </div>
  <% end %>
</div>
于 2013-03-21T07:47:46.030 に答える