Tag: devise

设计首次使用rails登录

如何在我的自定义会话控制器上确定该用户是第一次登录,我希望能够创建会话并重定向到welcome#index root_url如果它是第一次将其重定向到root_url 。 我拥有的代码如下 class MysessionsController after_sign_in_path_for(resource) end protected def after_sign_up_path_for(resource) “http://google.com” end end 我知道我需要自定义after_sign_up_path_for(resource)到我想要的但我无法找到如何确定用户是否已登录之前或没有设计

从Rails 3中的application.js访问current_user变量

我希望从我的application.js访问我的current_user变量(我将我的application.js重命名为application.js.erb,以便服务器可以理解我的ruby代码),所以我有类似的东西: function hello(){ alert(“”); } 但它失败了: 如何从位于/assets/my_script.js.erb的脚本中获取设备变量,例如来自devise gem的current_user,我认为它不应该是因为theese变量可能无法从公共站点加入,或者应该怎样做这个? 谢谢!

如何设计销毁会话并从控制器注销?

设计销毁会话并从控制器退出? if something_is_not_kosher # 1. log this event, 2. send notice redirect_to destroy_user_session_path and return end 还尝试过: if something_is_not_kosher # 1. log this event, 2. send notice redirect_to controller: ‘devise/sessions’, action: ‘destroy’, method: :delete and return end 错误是No route matches [GET] “/users/sign_out”但我明确设置方法::在示例2中删除。也许设计有一个方法? current_user.sign_out并试过sign_out(current_user)哪个也行不通? 谢谢您的帮助。 耙路线: new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE […]

设计 – Rails 4 – 无法登录

我刚开始使用Rails 4.我使用自定义字段设置了devise 。 我可以在注册后登录,但我无法从登录页面登录。 用户注册很好,我在数据库表中username , password等。 有人能告诉我我错过了什么吗? 我的用户模型非常基础。 这是它的样子 – class User true, :presence => {:message => ‘- Username cannot be blank’} validates :first_name, :presence => { :message => ” – Firstname cannot be blank!”} private def user_params params.require().permit(:first_name, :last_name, :username, :email, :password, :password_confirmation) end end 我检查了我的观点,并且我传递了正确的参数。 我的应用程序控制器中有以下内容 – class ApplicationController < ActionController::Base # […]

Rails错误resource_name – 设计帮助路由和呈现

我正在尝试渲染Devise gem的登录视图,但是我收到一个错误,下面是我目前的代码: 这是我的views/users/shared/_links.html.erb : 我的config/routes.rb : Densidste::Application.routes.draw do match ‘user/edit’ => ‘users#edit’, :as => :edit_current_user match ‘signup’ => ‘devise/users#new’, :as => :signup match ‘logout’ => ‘devise/sessions#destroy’, :as => :logout devise_for :users do get “login”, :to => “devise/sessions#new” end resources :sessions resources :users devise_for :users resources :aktivs resources :taggingposts resources :tags resources :kommentares resources :posts # […]

首次登录重定向后设计

通常after_sign_up_path可以工作,但现在我已经confirmations ,这就是垃圾。 我正在寻找一种方法来重定向用户的FIRST SIGN IN ,这意味着 sign_in_count == 0 last_sign_in == nil 所以我添加到我的applications_controller.rb def after_sign_in_path_for(user) if current_user.sign_in_count == 0 welcome_path end end 但当然这没用。 我错过了什么?

Rails 5 ActionController :: InvalidAuthenticityToken错误

我有一个rails应用程序,我打算升级到rails 5.我正在使用devise(v4.2.0)和rails(v5.0.0)。 正如在设计README.md文件中所建议的那样,我尝试将proceed_from_forgery移到了before_filter之上,但是当我尝试登录或更新我的错误时,我得到一个错误ActionController::InvalidAuthenticityToken 我的Application Controller是 class ApplicationController < ActionController::Base protect_from_forgery with: :exception, prepend: true before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) devise_parameter_sanitizer.permit(:account_update, keys: [:name]) end end 我的另一个BugController是 class BugsController < ApplicationController protect_from_forgery prepend: true, with: :exception before_action :authenticate_user! before_action :set_bug, only: [:show, :edit, :update] def update respond_to do |format| if @bug.update(bug_params) format.html […]

Devise中两个非常不同的用户模型

我的应用程序中有两种不同类型的用户使用Devise进行身份validation使用Rails 4,但它们具有非常不同的字段。 一个是买方,另一个是卖方。 买方必须拥有位置和付款信息,而卖方则不需要。 最初我认为创建两个单独的Devise模型是一个好主意,但必须有更好的方法。 我考虑将所有内容保存在同一个表格中并序列化买方的付款数据。 什么是好的解决方案?

为什么设计不在登录页面上显示身份validation错误?

我正在使用rails 4.2 我有一个名为devise_helper.rb的帮助文件 module DeviseHelper def devise_error_messages! return “” if resource.errors.empty? messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join sentence = I18n.t(“errors.messages.not_saved”, count: resource.errors.count, resource: resource.class.model_name.human.downcase) html = <<-HTML #{sentence} #{messages} HTML html.html_safe end end 自定义错误消息,它适用于注册和密码页面,但不适用于会话页面。 为什么是这样? 我知道我可以添加这样的东西: ‘close’ %> ‘close’ %> 我的application.html.erb文件和错误消息将显示在那里,但我不明白为什么我必须添加,当我已经有设计帮助器。 对于密码和注册,我只需要添加但是会话页面似乎没有这种方式。 我不确定这是否如何设计或者是否有我遗漏的东西。 编辑:我生成了会话控制器,但自从生成它以来我从未改变过任何内容。 根据我的理解,设计将只使用其默认控制器,直到我更改我生成的那个。 我的密码控制器也是这样的。 我确实对注册控制器进行了一些更改,以配置允许的参数。 class Users::SessionsController < Devise::SessionsController end

Ruby on Rails – 设计用户/ sign_out无法正常工作

我正在使用设计sign_in和sign_upurl正在运行 但是,当我尝试url时: http://localhost:3000/users/sign_out 它会生成路由错误 No route matches [GET] “/users/sign_out” 我怎样才能解决这个问题? 耙路线 rake routes new_user_session GET /users/sign_in(.:format) {:action=>”new”, :controller=>”devise/sessions”} user_session POST /users/sign_in(.:format) {:action=>”create”, :controller=>”devise/sessions”} destroy_user_session DELETE /users/sign_out(.:format) {:action=>”destroy”, :controller=>”devise/sessions”} user_password POST /users/password(.:format) {:action=>”create”, :controller=>”devise/passwords”} new_user_password GET /users/password/new(.:format) {:action=>”new”, :controller=>”devise/passwords”} edit_user_password GET /users/password/edit(.:format) {:action=>”edit”, :controller=>”devise/passwords”} PUT /users/password(.:format) {:action=>”update”, :controller=>”devise/passwords”} cancel_user_registration GET /users/cancel(.:format) {:action=>”cancel”, :controller=>”devise/registrations”} user_registration POST /users(.:format) […]