访问控制器的数据获取未定义的方法

时间:2013-06-05 00:40:58

标签: ruby-on-rails

我无法绕过这个,我可以用一些新鲜的眼睛。我在我的一个观点中得到一个未定义的方法,我无法弄清楚为什么。

我在管理员命名空间下有一组控制器(即admin / restaurants,admin / menu)。我也有一个管理员控制器,但没有模型支持它。我想使用管理索引页面作为仪表板来显示来自命名空间下的其他控制器的各种数据。出于某种原因,当我尝试从admin / index视图中的其他控制器访问任何数据时,我得到nil的未定义方法`each':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 %>

2 个答案:

答案 0 :(得分:0)

@menus = Menu.all

在控制器中,复数

@menu.each do |menu| %>

在视图中,单身。

@menu未定义,且为零。

答案 1 :(得分: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