2013-09-28 24 views
3

我正在使用Rails 4,並試圖包含koudoku條紋寶石。這裏是我的路線:應用程序助手方法可用性

# Added by Koudoku. 
mount Koudoku::Engine, at: 'koudoku' 
scope module: 'koudoku' do 
    get 'pricing' => 'subscriptions#index', as: 'pricing' 
end 

resource :account 

devise_for :users, :skip => [:sessions] 
as :user do 
    get '/login' => 'devise/sessions#new', :as => :new_user_session 
    post '/login' => 'devise/sessions#create', :as => :user_session 
    get '/logout' => 'devise/sessions#destroy', :as => :destroy_user_session 
end 

get '/dashboard', to: 'dashboard#index' 
get '/reports/generate', to: 'reports#generate' 

authenticated :user do 
    root :to => 'dashboard#index', :as => :authenticated_root 
end 

root :to => redirect('/login') 

這是我收到的錯誤:

undefined local variable or method `root_url 

我可以訪問其他路線就好了,它只是試圖使應用程序的輔助方法(例如,我定義的一個自定義應用程序方法,或路由方法)從模塊路線...這有道理嗎?我該如何解決?在路由層

+0

你有沒有發現@喬恩 – Tyler

+0

嘗試幫手「應用」或助手回答:控制器的所有內部,看看是否能解決這個問題。 – JakeTheSnake

回答

0

條件邏輯種違背了Rails MVC架構的意圖。路由文件應該只是將一個Web請求映射到一個控制器,然後控制器就會有條件邏輯來確定顯示的內容。

在這種情況下,它是一個有點不同,因爲要重定向,但我個人仍把它的控制器。換句話說發送rootdashboard#index,然後在該控制器的頂部(或在before_filter)只是做

redirect_to login_path unless current_user_authenticated? 

(在這裏我假設你會對登錄一個名爲航線,這將是好的做法,以及一個current_user_authenticated?方法來檢查重定向之前你想要的任何邏輯。這將是一個更Rails-y的方法,無論這是值得...)

+0

我同意,但問題不在於受保護的頁面......這實際上效果很好......問題出在koudoku模塊提供的「定價」頁面上。如果我訪問該頁面,它給出了錯誤:( –

+0

嗯,知道了。您是否嘗試過在你的控制器/視圖中使用'root_path'?還有,哪裏的堆棧跟蹤說的錯誤是怎麼回事? – tyler

+1

那麼,它weird- - 導致沒有模塊的root_path工作正常..它在應用程序佈局視圖中,但只要我去koudoku所需的不同頁面,然後它在應用程序視圖中引發錯誤..幾乎就像應用程序路線aren 「T從附帶koudoku繼承應用控制器加載中... –

6

嘗試添加「main_app」。在你的根路徑之前。例如:

main_app.root_path 
+1

這並不工作,但它加入這款發動機後,似乎缺憾,我有我所有的輔助方法之前添加這一點。有需要的輔助方法的方式在引擎中? – MattyB

相關問題