首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到使用炼金术CMS的控制器设计方法

未找到使用炼金术CMS的控制器设计方法
EN

Stack Overflow用户
提问于 2015-02-18 19:44:10
回答 1查看 218关注 0票数 0

我有一个Rails 4.1.8应用程序,它是由第三方开发的;它已经在用户模型中使用了Devise。我想使用炼金术,只是为了管理一些主要是静态的网页,如“关于我们”等。

因此,我遵循了将炼金术CMS 3.1.0-rc1安装到现有应用程序的指导,并在初始化程序中设置了Alchemy.user_class_name。现在,我将炼金术安装在/p/路径下,以避免与现有路径发生冲突。

一切似乎都正常,除非我尝试在注销时查看炼金术士页面,否则我的application.html.erb抛出以下错误:

代码语言:javascript
复制
undefined method `new_user_session_path' for
#<#<Class:0x007fe4c6833ee0>:0x007fe4cb5b8940>

之所以会出现这种情况,是因为我的应用程序在application.html.erb中使用application.html.erb来为来宾用户显示登录链接。在常规应用程序中,它工作得很好,而且当我登录时查看炼金术页面时也很好。

我对“设计”和“炼金术”还不太熟悉,不知道问题在哪里。我猜这是两件事之一:

  1. 当没有登录用户时,应用程序将创建一个“来宾”用户(用于访问用户模型上的其他方法),并且Devise不了解该用户,因此它不会创建new_user_session_path助手。
  2. 我的路由中有一些问题,因为Alchemy是一个可安装的引擎,所以我的应用程序控制器中可能有一些逻辑没有被调用。

我不想发布我的整个routes.rb或应用程序控制器,但是这里是与前者相关的设计部分。

代码语言:javascript
复制
  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,比如:

代码语言:javascript
复制
devise_scope :user do
  get 'login', to: 'devise/sessions#new'
end

我也遇到了同样的问题:它可以在主应用程序中工作,并且当用户登录时也是如此,但在使用来宾用户的炼金术页面上就不行了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-18 21:19:10

常见的rails路由代理问题。由于炼金术视图不知道您的主要应用程序路由,所以您需要使用“main_app”路由代理对象。

所以叫'main_app.new_user_session_path‘应该能解决你的问题。

阅读本Rails指南中有关引擎路线的更多信息:http://guides.rubyonrails.org/engines.html#routes

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28592500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档