我在使用Rails创建引擎时遇到问题。
我想创建一个使用Devise共享我所有其他应用程序的引擎。
我按照rails网站上的Engines入门指南进行操作: http://edgeguides.rubyonrails.org/engines.html
创建了一个应用程序,需要我的引擎......一切运行得很好。
然后,我遇到了Devise(我之前已经在应用程序中直接安装了Devise,但是没有在引擎中安装)但是当我尝试使用它时,通过访问继承before_action authenticate_user!
的任何控制器,我收到以下消息:
http://i.imgur.com/dIIxgwU.jpg
我真的不明白(我是从Ruby开始的,我是CakePHP的人),路由已设置,但找不到它(?)。
引擎/配置/初始化/ devise.rb
Devise.setup do |config|
...
config.router_name = :doisbit
config.parent_controller = 'Doisbit::ApplicationController'
end
引擎/配置/ routes.rb中
Doisbit::Engine.routes.draw do
...
devise_for :users, class_name: "Doisbit::User", module: :devise
...
end
发动机/ LIB / doisbit / engine.rb
module Doisbit
class Engine < ::Rails::Engine
isolate_namespace Doisbit
end
end
发动机/ LIB / doisbit.rb
require 'doisbit/engine'
require 'devise'
...
发动机/ doisbit.gemspec
...
Gem::Specification.new do |s|
...
s.add_dependency "devise"
end
引擎/应用/控制器/ application_controller.rb
module Doisbit
class ApplicationController < ActionController::Base
before_action :authenticate_user!
end
end
应用/配置/ routes.rb中
Rails.application.routes.draw do
...
mount Doisbit::Engine, at: "/doisbit"
end
应用/配置/环境/ development.rb
Rails.application.configure do
...
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
end
应用/ Gemfile中
...
gem 'doisbit', path: "C:/.../doisbit"
...
通过访问/doisbit/users/sign_in
注意到我收到了表单。 (杜)
i.imgur.com/anTRK2d.jpg
但是......仍然......默认情况下,当我没有登录时,它会路由到/users/sign_in
。
我缺少什么?