渲染部分时 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
。
我正在尝试 运行 这段代码,它 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
。