2

リンクから特定のレビューにアクセスしようとしています:

<%= link_to "Full Review", review_path(review) %><

show.html.erb:

 <%= @review.pro %>

reviews_controller.rb:

def show 
    @review = Review.find(params[:id])
end

ここの移行ファイルに示されているように、pro という名前のレビュー テーブルに列があります。

class CreateReviews < ActiveRecord::Migration
def change
  create_table :reviews do |t|
    t.string :pro
    t.string :con
    t.string :advice
    t.string :date
    t.string :role
    t.string :company

    t.timestamps
  end
end

終わり

私が得るエラーは次のとおりです。

undefined method `pro' for nil:NilClass
Extracted source (around line #1):

1: <%= @review.pro %>

show メソッドに「puts @review」を含めても、Rails コンソールに何も返されません。これを修正する方法について何かアドバイスはありますか?

show メソッドに Review.find(1) を手動で含めたときに更新します。

ReviewsController#show による処理 HTML パラメータ: {"id"=>"1"} レイアウト/アプリケーション内で reviews/show.html.erb をレンダリング (0.9ms) 3ms で 500 内部サーバー エラーを完了

ActionView::Template::Error (未定義のメソッドpro' for nil:NilClass): 1: <%= @review.pro %> app/views/reviews/show.html.erb:1:in_app_views_reviews_show_html_erb___648582160945665650_70143359368840'

4

2 に答える 2

0

あなたの@review変数はnilのようです。(おそらく、この行で一致するレコードが得られない可能性がありますReview.find(params[:id]))

このエラーを回避する 1 つの方法は、

<%= @review.try(:pro) %>
于 2013-04-18T03:57:21.243 に答える