使用Alchemy CMS找不到设计控制器方法

时间:2015-02-18 19:44:10

标签: ruby-on-rails ruby devise alchemy-cms

我有一个由第三方开发的Rails 4.1.8应用程序;它已经将Devise与User模型一起使用。我想使用Alchemy来管理一些大多数静态页面,例如"关于我们"等

所以我按照说明将Alchemy CMS 3.1.0-rc1安装到现有应用程序中,并在初始化程序中设置Alchemy.user_class_name。我现在将Alchemy安装在/p/路径下,以避免与现有路径发生冲突。

一切似乎都运行良好,除非我在注销时尝试查看Alchemy页面,我的application.html.erb会抛出以下错误:

undefined method `new_user_session_path' for
#<#<Class:0x007fe4c6833ee0>:0x007fe4cb5b8940>

这是因为我的应用使用new_user_session_path中的application.html.erb来显示来宾用户的登录链接。在常规应用程序中,它工作正常,并且在我登录时查看Alchemy页面时也能正常工作。

我对Devise和Alchemy不太熟悉,无法找出问题所在。我猜它是两件事之一:

  1. 当没有登录用户时,该应用正在创建一个&#34;来宾&#34;用户(用于访问用户模型上的其他方法),并且Devise不了解此用户,因此它不会创建new_user_session_path帮助程序。
  2. 我的路由中遇到了一些问题,因为Alchemy是一个可安装的引擎,我的应用程序控制器中可能有一些逻辑没有被调用。
  3. 我不想发布我的整个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
    

    我遇到了同样的问题:它可以在主应用程序中运行,当用户登录时,但不能在具有访客用户的Alchemy页面上运行。

1 个答案:

答案 0 :(得分:1)

常见的路由路由代理问题。由于Alchemy的观点不了解您的主要应用路线,因此您需要使用&#39; main_app&#39;路由代理对象。

所以调用&#39; main_app.new_user_session_path&#39;应该解决你的问题。

在此Rails指南中详细了解引擎中的路由:http://guides.rubyonrails.org/engines.html#routes