ruby on rails 3-NoMethodError-未定义的方法



我在显示来自单独控制器的数据时遇到问题。我有很多用户,每个用户都有很多页面。我遵循本教程进行了一些小调整。

不断出现的错误是:

NoMethodError in SitesController#show
undefined method `page' for #<ActionDispatch::Request:0x00000102452d30>

我的路线.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

这给出了一个不同的错误。

我完全被困在想办法弄清楚!

期待您的帮助。

Bob

问题就在这里:request.page

request对象属于ActionDispatch::Request类,该类没有page方法。

要跟踪这样的错误,您可以尝试查看文档或在调试器中乱搞。

尝试在启用--debugger的情况下运行控制器。

  • 如果您运行的是Ruby 1.8,请安装ruby-debug-gem
  • 如果您运行的是Ruby1.9,请安装ruby-debug19gem
  • 在此处添加debugger调用:

    class SitesController < ApplicationController
      def show
        debugger
        @site = Site.find_by_name!(request.page)      
      end   
    end
    
  • 使用--debugger选项运行服务器。

  • 查看p request.page的功能。我打赌它会有一个"未定义的方法"错误,当你试图查看控制器的操作时,你就会看到
  • 如果你做一个p request.class,你可以找到对象是什么类,然后查找文档来了解如何使用它

相关内容

  • 没有找到相关文章

最新更新