如何使用命名空间的Rails 5.2显示数据

时间:2018-08-18 21:39:23

标签: ruby-on-rails ruby ruby-on-rails-5.2

我有一个管理命名空间,其中有项目作为资源:

namespace :admin do
  resources :items
end

位于 app / controllers / admin / 中的我的项目控制器如下:

module Admin
  class ItemsController < ApplicationController
    def show             
    end

    private

    def set_item
      @item = Item.find(params[:id])
    end
  end
end

我遇到的问题是在显示视图中显示数据:admin / items#show

由于我有一个管理名称空间,因此似乎无法像开始尝试名称空间和作用域之前一样显示数据。

<p>
  <strong>Tittle:</strong>
  <%= @item.tittle %>
</p>

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

<!-- More item attributes -->

我得到的错误是:

undefined method `tittle' for nil:NilClass

3 个答案:

答案 0 :(得分:0)

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

尝试

def show
  @item = Item.find(params[:id])
end

答案 1 :(得分:0)

您已经在控制器中定义了方法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

答案 2 :(得分:0)

您没有在任何地方致电set_item。可以直接在show方法中调用该方法,也可以通过在show方法上方放置以下内容来在before操作中调用它

before_action :set_item, only: :show