2

我正在尝试通过链接访问特定评论:

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

显示.html.erb:

 <%= @review.pro %>

评论控制器.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) 时更新:

由评论控制器处理#show 作为 HTML 参数:{“id”=>“1”} 在布局/应用程序中呈现评论/show.html.erb(0.9 毫秒)在 3 毫秒内完成 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变量为零。(可能您在这一行中没有得到匹配的记录Review.find(params[:id])

避免此错误的一种方法是

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

Nil 异常是最难调试的。正如@sameera207 所建议的那样,您必须“遵循零”。

在您的控制器中,尝试

def show 
  @review = Review.find(params[:id])
  logger.info "Review: #{@review}"
  logger.info "Review is nil? #{@review.nil?}"
end

如果您的log/development.log节目Review is nil?: true,那么您没有找到正确的记录。您的参数也应该显示在您的日志文件中。

于 2013-04-18T16:45:38.240 回答