渲染部分时 nil class 的未定义方法

undefined method for nil class when rendering partial

我正在尝试 运行 这段代码,它 returns 我

undefined method `image' for nil:NilClass

但是语法和代码似乎还不错。

索引:

 - @recipes.each_slice(4) do |recipes|
  .row
    - recipes.each do |recipe|
      .col-md-3
         %h4.modal-title= recipe.title
         .modal-body
            = render :partial =>'show', :locals => {:recipe => @recipe}

_show:

.main_content
  #recipe_top.row
    .col-md-4
      = image_tag @recipe.image.url(:medium), class:"recipe_image"

将您的代码更改为:

= render :partial =>'show', :locals => { :recipe => recipe }

因为您没有实例变量 @recipe,而是在行 recipes.each do |recipe|.

中定义的局部变量 recipe

试试这个, 只需在传入语言环境时替换您的实例变量@recipe,因为您已经在它上面完成了每个操作并获取了局部变量配方,因此在您的语言环境中传递它,然后在您的显示页面中像这样调用。

 recipe.image.url(:medium)

你的代码含义有误:

而不是:recipe => @recipe 使用 :recipe => recipe 然后在 show partial 中使用 recipe 而不是 @recipe

在索引中定义 @recipe = recipe 并在显示中使用 @recipe