我有一个Rails 4.1.8应用程序,它是由第三方开发的;它已经在用户模型中使用了Devise。我想使用炼金术,只是为了管理一些主要是静态的网页,如“关于我们”等。
因此,我遵循了将炼金术CMS 3.1.0-rc1安装到现有应用程序的指导,并在初始化程序中设置了Alchemy.user_class_name。现在,我将炼金术安装在/p/路径下,以避免与现有路径发生冲突。
一切似乎都正常,除非我尝试在注销时查看炼金术士页面,否则我的application.html.erb抛出以下错误:
undefined method `new_user_session_path' for
#<#<Class:0x007fe4c6833ee0>:0x007fe4cb5b8940>之所以会出现这种情况,是因为我的应用程序在application.html.erb中使用application.html.erb来为来宾用户显示登录链接。在常规应用程序中,它工作得很好,而且当我登录时查看炼金术页面时也很好。
我对“设计”和“炼金术”还不太熟悉,不知道问题在哪里。我猜这是两件事之一:
new_user_session_path助手。我不想发布我的整个routes.rb或应用程序控制器,但是这里是与前者相关的设计部分。
devise_for :users, :path => "auth", :path_names => { :sign_in => 'login', :sign_out => 'logout',
:password => 'secret', :confirmation => 'verification', :registration => 'register' },
:controllers => {
:registrations => "authentication",
:passwords => "passwords",
:omniauth_callbacks => "omniauth_callbacks",
:sessions => "sessions"
}
devise_scope :user do
# several get/post definitions here to change various urls
end我不认为它是#2,因为即使我为一个定制路径定义了一个devise_scope,比如:
devise_scope :user do
get 'login', to: 'devise/sessions#new'
end我也遇到了同样的问题:它可以在主应用程序中工作,并且当用户登录时也是如此,但在使用来宾用户的炼金术页面上就不行了。
发布于 2015-02-18 21:19:10
常见的rails路由代理问题。由于炼金术视图不知道您的主要应用程序路由,所以您需要使用“main_app”路由代理对象。
所以叫'main_app.new_user_session_path‘应该能解决你的问题。
阅读本Rails指南中有关引擎路线的更多信息:http://guides.rubyonrails.org/engines.html#routes
https://stackoverflow.com/questions/28592500
复制相似问题