Tag: 装饰

Helper Devise:在请求环境中找不到`Warden :: Proxy`实例

我尝试将Devise用于我的Rails应用程序。 我可以注册并登录但是当我转到我的其他页面“构建”时,我收到以下错误: Devise :: MissingWarden in Home#show Devise在您的请求环境中找不到Warden::Proxy实例。 确保您的应用程序正在按预期加载Devise和Warden,并且Warden::Manager中间件存在于您的中间件堆栈中。 如果您在某个测试中看到这一点,请确保您的测试要么正在执行Rails中间件堆栈,要么您的测试正在使用Devise::Test::ControllerHelpers模块来注入request.env[‘warden’]对象您。 这是我的控制器: class ApplicationController < ActionController::Base protect_from_forgery with: :exception private # Overwriting the sign_out redirect path method def after_sign_out_path_for(resource_or_scope) build_path end end 这是我的两个部分观点: :delete) %> 和 调试之后,我发现问题来自我的“show”控制器中的这一行:template = HomeController.render(’layouts / _template’) 谢谢你的帮助。

在sign_out错误后设计sign_in

设计有点问题。 退出后,当我第一次填写“登录”表单时,它会写入validation错误 您需要先登录或注册才能继续。 但是当我第二次提交表格时,我没有任何错误。 并成功登录。 我确实使用链接注销 :delete %> 此外,在注册后,它会重定向我在签名表格并写入validation错误: 您需要先登录或注册才能继续。 但再次输入相同它工作正常 我做错了什么? 提前致谢!

使用自定义会话控制器设计after_sign_in_path

如何定义设计post_sign_in_path以重定向到页面用户是在点击登录之前? 我在application_controller中试过这个: 13 def after_sign_in_path_for(resource_or_scope) 14 sign_in_url = url_for(:action => ‘new’, :controller => ‘my_sessions’, :only_path => false, :protocol => ‘http’) 15 if request.referer == sign_in_url 16 super 17 else 18 stored_location_for(resource_or_scope) || request.referer || root_path 19 end 20 end 有了这个,我只被重定向到root_path。 值得一提的是,我有Sessions callse MySessionsController的自定义控制器。 我究竟做错了什么?

设计允许在单个控制器操作上进行令牌认证

我有一个web应用程序,它使用所有控制器的设计数据库身份validation,但是我希望有一个控制器操作,其中使用令牌进行身份validation。 我能用这个设计吗?

设计运行时设计错误:在rails应用程序中安装

我正在使用ruby 2.2.3和rails 4.2.5。 我无法在我的项目上运行rails generate devise:install。 Bundler抛出了一个错误。 错误如下 rails g devise:install /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require’: There was an error while trying to load the gem ‘uglifier’. (Bundler::GemRequireError) from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require’ from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:72:in `each’ from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:72:in `block in require’ from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:61:in `each’ from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler/runtime.rb:61:in `require’ from /home/suyesh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.11.1/lib/bundler.rb:99:in `require’ […]

rake db:迁移错误表

我正在尝试运行rake db:migrate并在控制台中收到错误。 好像我正在创建一个已经存在的表,但我不知道如何删除旧表,或重置数据库以重新启动。 我没有任何用户这样擦除或从新鲜开始不会是一个问题。 create_table(:users)rake aborted! StandardError:发生错误,此以及所有后续迁移都已取消: SQLite3 :: SQLException:表“users”已经存在:CREATE TABLE“users”(“id”INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,“email”varchar(255)DEFAULT”NOT NULL,“encrypted_pa​​ssword”varchar(255)DEFAULT’ ‘NOT NULL,“reset_password_token”varchar(255),“reset_password_sent_at”datetime,“remember_created_at”datetime,“sign_in_count”integer DEFAULT 0 NOT NULL,“current_sign_in_at”datetime,“last_sign_in_at”datetime,“current_sign_in_ip”varchar(255),“ last_sign_in_ip“varchar(255),”created_at“datetime,”updated_at“datetime)/Users/jovanhernandez/.rvm/gems/ruby-2.1.2/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91 :在`initialize’中

如何为Devise添加策略

我正在尝试添加一个非常简单的策略来设计,它似乎并没有起作用。 这是我试图使用的代码 #config/initializers/devise.rb Devise.setup do |config| config.orm = :mongo_mapper config.warden do |manager| manager.strategies.add(:auto_login_strategy) do def valid? params[:auto_login] end def authenticate! u = User.find(:first) u.nil? ? fail!(“No created users”) : success!(u) end end manager.default_strategies(:scope=>:user).unshift :auto_login_strategy end end 代码应该检查参数的’auto_login’参数,如果存在,找到它可以的第一个​​用户并登录。我完全跳过安全措施,只是让一个基本的测试用例工作。 当我尝试登录到具有before_filter authenticate_user!的控制器时before_filter authenticate_user! (即localhost:3000/test?auto_login=true ),它无法登录并重定向到登录页面。 我究竟做错了什么?

无法覆盖Devise密码控制器

在我提交电子邮件给我发送重置密码说明后,我需要将我的Rails应用程序重定向到主页。 默认情况下,设计在输入电子邮件后呈现登录表单。 所以我试图覆盖Devise::PasswordsController并更改其redirect_to ,但没有成功。 事实上,我认为Rails甚至不参加我的课程。 这可能是一个非常愚蠢的错误,但我已经在这里呆了半天没有成功。 我想从这里覆盖密码控制器。 这是我的控制器: class PasswordsController < Devise::PasswordsController protected def after_sending_reset_password_instructions_path_for(resource_name) root_url end end routes.rb中: devise_for :users, :controllers => {:passwords => “passwords”} devise_for :users, :controllers => {:registrations => “registrations”} devise_for :users, :controllers => {:sessions => “sessions”} 我想提一下,我在同一个应用程序中覆盖了Devise的注册和会话控制器,它们似乎工作正常。

`add_route’:无效的路由名称,已在使用中:’root’(ArgumentError)

我使用rails 4.1.1和ruby 2.1.1并且我遇到了设计问题,即我的路线..我之前使用过很多次 devise_for :users get ‘pages/index’ # Route to Devise Login Page devise_scope :user do root to: “devise/sessions#new” end # Directing the user after login authenticated :user do root :to => ‘pages#index’ end 但是我得到了错误 `add_route’: Invalid route name, already in use: ‘root’ (ArgumentError) 当试图启动服务器..我可以看到root被使用了两次,但就像我说我过去能够做到这一点..有没有办法解决这个问题 谢谢

无法安装Devise

尝试安装Devise,我收到以下消息“无法找到生成器设计:安装。” leigh@leigh-VirtualBox:~/Projects/dev01$ bundle install Using rake 10.3.2 Using i18n 0.6.11 Using json 1.8.1 Using minitest 5.4.0 Using thread_safe 0.3.4 Using tzinfo 1.2.1 Using activesupport 4.1.4 Using builder 3.2.2 Using erubis 2.7.0 Using actionview 4.1.4 Using rack 1.5.2 Using rack-test 0.6.2 Using actionpack 4.1.4 Using mime-types 1.25.1 Using polyglot 0.3.5 Using treetop 1.4.15 Using mail 2.5.4 […]