我无法绕过这个,我可以用一些新鲜的眼睛。我在我的一个观点中得到一个未定义的方法,我无法弄清楚为什么。
我在管理员命名空间下有一组控制器(即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 %>
答案 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