我正试图通过以下链接访问特定评论:
<%= 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 as HTML 参数:{“id”=&gt;“1”} 在布局/应用程序中呈现评论/ show.html.erb(0.9ms) 在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'
答案 0 :(得分:0)
似乎您的@review
变量为零。 (可能你可能在这一行Review.find(params[:id])
)
避免此错误的一种方法是
<%= @review.try(:pro) %>
答案 1 :(得分:0)
Nil异常是最难调试的。你必须像@ sameera207所暗示的那样“跟随Nil”。
在您的控制器中,尝试
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
,那么您找不到合适的记录。您的参数也应显示在您的日志文件中。