我在显示来自单独控制器的数据时遇到问题。我有很多用户,每个用户都有很多页面。我已经按照this教程进行了一些小的调整。
不断出现的错误是:
NoMethodError in SitesController#show
undefined method `page' for #<ActionDispatch::Request:0x00000102452d30>
我的routes.rb如下:
devise_for :users
resources :users, :only => [:index, :show] do
resources :pages, :shallow => true
end
match '/' => 'sites#show', :constraints => { :subdomain => /.+/ }
root :to => "home#index"
我有一个网站控制器:
class SitesController < ApplicationController
def show
@site = Site.find_by_name!(request.page)
end
end
我也试过了:
def show
@site = Site.find_by_name!(params[:site])
end
这会产生不同的错误。
我总是试图弄明白这一点!
期待您的协助。
鲍勃
答案 0 :(得分:0)
问题在于:request.page
request
对象属于ActionDispatch::Request
类,没有page
方法。
要跟踪这样的错误,您可以尝试查看文档或在调试器中弄乱。
尝试在启用--debugger
的情况下运行您的控制器。
ruby-debug
gem。 ruby-debug19
gem。在此处添加debugger
电话:
class SitesController < ApplicationController
def show
debugger
@site = Site.find_by_name!(request.page)
end
end
使用--debugger
选项运行您的服务器。
p request.page
的作用。我打赌它会有一个“未定义的方法”错误,只是当你试图查看控制器动作时就会看到。p request.class
,您可以找到该对象的类,然后查找文档以了解如何使用它。