2011-04-27 119 views
2

我在顯示來自單獨控制器的數據時出現問題。我有許多用戶,每個用戶都有很多頁面。我已經按照this教程進行了一些小調整。NoMethodError - undefined方法

是不斷出現的錯誤是:

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

問題是這裏:request.page

request的對象是類ActionDispatch::Request,它不具有page方法。

要追蹤這樣的錯誤,您可以嘗試查看文檔或在調試器中調試。

嘗試運行您的控制器並啓用--debugger

  • 如果您正在運行Ruby 1.8,請安裝ruby-debug gem。
  • 如果您正在運行Ruby 1.9,請安裝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,您可以找出該對象是什麼類,然後查看文檔以瞭解如何使用它。
相關問題