Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 应用程序助手方法可用性_Ruby On Rails_Ruby_Routes_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 应用程序助手方法可用性

Ruby on rails 应用程序助手方法可用性,ruby-on-rails,ruby,routes,ruby-on-rails-4,Ruby On Rails,Ruby,Routes,Ruby On Rails 4,我使用的是Rails 4,并试图包括koudoku stripe gem。以下是我的路线: # 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 => [:se

我使用的是Rails 4,并试图包括koudoku stripe gem。以下是我的路线:

# 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

我可以很好地访问其他路由,它只是尝试从模块routes呈现应用程序助手方法(例如,我定义的自定义应用程序方法,或routes方法)。。。这有意义吗?如何解决这个问题?

路由层中的条件逻辑有点违背Rails MVC体系结构的意图。路由文件应该只将一个web请求映射到一个控制器,然后控制器就有条件逻辑来确定显示的内容

在这种情况下,它有点不同,因为你想重定向,但我个人还是会把它放在控制器中。换句话说,将
根目录
发送到
仪表板#索引
,然后在该控制器的顶部(或在
过滤器之前
)只需执行以下操作

(在这里,我假设您将有一个用于登录的命名路由,这将是一个良好的实践,以及一个
current\u user\u authenticated?
方法,用于在重定向之前检查您想要的任何逻辑。这将是一种更为Rails-y的方法,无论它值多少…

尝试在根路径之前添加“main\u app.”。例如:

main_app.root_path

我同意,但是问题不在于受保护的页面。。。这真的很好用。。。问题在于koudoku模块给出的“定价”页面。如果我访问该页面,则会出现以下错误:(啊,明白了。你试过在你的控制器/视图中使用
root\u path
吗?另外,堆栈跟踪显示错误发生在哪里?好吧,这很奇怪——因为没有模块,root\u路径工作正常。它在应用程序布局视图中。但是,只要我转到koudoku需要的另一个页面,它就会在t中抛出错误应用程序视图..就像应用程序路由不是从koudoku附带的继承应用程序控制器加载的一样..您是否找到了@jonTry helper“application”的答案或者助手:都在控制器内部,看看这是否解决了问题。这确实有效,但在添加此引擎后,我必须在所有助手方法之前添加此方法,这似乎很困难。是否有方法要求在引擎中使用助手方法?
main_app.root_path