我有一个admin名称空间,其中包含作为资源的项目:
namespace :admin do
resources :items
end
我的项目控制器位于应用程序/控制器/admin/中,如下所示:
module Admin
class ItemsController < ApplicationController
def show
end
private
def set_item
@item = Item.find(params[:id])
end
end
end
我遇到的问题是在show视图中显示数据:admin/item#show
似乎因为我有一个admin命名空间,所以在我开始尝试命名空间和作用域之前,我不能像以前那样显示数据。
<p>
<strong>Tittle:</strong>
<%= @item.tittle %>
</p>
<p>
<strong>Desciption:</strong>
<%= @item.description %>
</p>
<!-- More item attributes -->
我得到的错误是:
undefined method `tittle' for nil:NilClass
发布于 2018-08-19 06:55:42
您的show方法没有将@item
设置为任何值。
试一试
def show
@item = Item.find(params[:id])
end
发布于 2018-08-20 12:10:25
您已经在控制器中定义了一个方法set_item
,但是您还没有为您的show
操作调用它。添加如下所示的before_action
:
module Admin
class ItemsController < ApplicationController
before_action :set_item, only: [:show]
def show
end
private
def set_item
@item = Item.find(params[:id])
end
end
end
发布于 2018-08-20 12:11:22
您不能调用set_item
anywhere。可以直接在show方法中调用该方法,也可以通过将以下代码放在show方法之上,在the操作中调用该方法
before_action :set_item, only: :show
https://stackoverflow.com/questions/51912759
复制相似问题