0

我无法解决这个问题,我可以用一些新鲜的眼睛。我在我的一个视图中得到了一个未定义的方法,我不知道为什么。

我在管理命名空间下有一组控制器(即管理/餐厅、管理/菜单)。我也有一个管理员控制器,但没有模型支持它。我想使用管理索引页面作为仪表板来显示来自其下命名空间的其他控制器的各种数据。出于某种原因,当我尝试从管理/索引视图中的其他控制器访问任何数据时,我得到了 nil:NilClass 的未定义方法“每个”

路线

namespace :admin do
   resources :restaurants
   resources :menus
end

app/controllers/admin_controller.rb 中的控制器

class AdminController < ApplicationController

def Index
     @restaurants = Restaurant.all
     @menus = Menu.all
end

app/views/admin/index.html.erb 中的视图

<% @restaurants.each do |restaurant| %>
    <%=  restaurant.name   %>
    <%=  restaurant.address   %>
<% end %>

<% @menus.each do |menu| %>
    <%=  menu.name   %>
    <%=  menu.price   %>
<% end %>
4

2 回答 2

0
@menus = Menu.all

在控制器中,复数

@menu.each do |menu| %>

看来,单身。

@menu是未定义的,它是零。

于 2013-06-05T03:15:12.533 回答
0

这可能与命名空间无关。相反,您需要解决一些关键的拼写错误(即,控制器中的大小写错误和@menus视图中的对象名称错误)。

尝试以下操作:

# app/controllers/admin_controller.rb
class AdminController < ApplicationController

def index
    @restaurants = Restaurant.all
    @menus = Menu.all
end

# app/views/admin/index.html.erb
<% @menus.each do |menu| %>
    <%=  menu.name   %>
    <%=  menu.price   %>
<% end %>

此外,您需要确保您的管理控制器有一个路由(而不仅仅是一个命名空间):

resources :admin, :only => :index # You've probably already done this if you're receiving a view error
于 2013-06-05T03:28:38.223 回答