首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用命名空间控制器rails 5.2显示数据

如何使用命名空间控制器rails 5.2显示数据
EN

Stack Overflow用户
提问于 2018-08-19 05:39:23
回答 3查看 47关注 0票数 -1

我有一个admin名称空间,其中包含作为资源的项目:

代码语言:javascript
复制
namespace :admin do
  resources :items
end

我的项目控制器位于应用程序/控制器/admin/中,如下所示:

代码语言:javascript
复制
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命名空间,所以在我开始尝试命名空间和作用域之前,我不能像以前那样显示数据。

代码语言:javascript
复制
<p>
  <strong>Tittle:</strong>
  <%= @item.tittle %>
</p>

<p>
  <strong>Desciption:</strong>
  <%= @item.description %>
</p>

<!-- More item attributes -->

我得到的错误是:

代码语言:javascript
复制
undefined method `tittle' for nil:NilClass
EN

回答 3

Stack Overflow用户

发布于 2018-08-19 06:55:42

您的show方法没有将@item设置为任何值。

试一试

代码语言:javascript
复制
def show
  @item = Item.find(params[:id])
end
票数 0
EN

Stack Overflow用户

发布于 2018-08-20 12:10:25

您已经在控制器中定义了一个方法set_item,但是您还没有为您的show操作调用它。添加如下所示的before_action

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2018-08-20 12:11:22

您不能调用set_item anywhere。可以直接在show方法中调用该方法,也可以通过将以下代码放在show方法之上,在the操作中调用该方法

代码语言:javascript
复制
before_action :set_item, only: :show
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51912759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档