javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

Ruby / Rails:如何自定义Devise的邮件模板?

我已经为我的Rails应用(3.0.1)安装了Devise,并且可以正常工作。 我只是似乎无法自定义邮件视图。

  • 我的用户模型是“用户”。
  • 设计控制器(我需要重写这些控制器,以便可以告诉控制器使用什么布局文件)在app/views/users/mailer/中,就像app/views/users/registrations/new.html.haml
  • 设计视图(我已编辑)在app/views/users/mailer/中像app/views/users/registrations/new.html.haml一样
  • 这是我的路线文件的设计部分:
    devise_for :users, :controllers => { 
      :sessions => "users/sessions", 
      :registrations => "users/registrations", 
      :passwords => "users/passwords", 
      :confirmations => "users/confirmations", 
      :unlocks => "users/unlocks"
    } do
      get "/login" => "devise/sessions#new"
      get "/logout" => "devise/sessions#destroy"
    end

至少上面的一切都能正常工作。 但是,在发送邮件时,Devise似乎使用的模板不是我在2752342347215275275008上编辑过的模板。Devise似乎仍采用默认模板(就像我从未编辑过文件一样)。 我猜Devise仍然使用gem中的文件。

如果有帮助,这里是黄瓜错误:

Feature: Manage accounts
  In order to manage accounts
  users
  should be able to signup

  # By default, www.example.com is the host when testing.
  # This is a problem because when our site searches for the domain example.com, it cant find any.
  # Therefore we must either set our testing domain to one of our choosing (and mention that in the routes), or create a domain example.com
  # I prefer the first option.
  Scenario: Signing up and resetting the password                                                                      # features/manage_accounts.feature:10
    Given I am on the login page                                                                                       # features/step_definitions/web_steps.rb:19
    When I follow "Sign up"                                                                                            # features/step_definitions/web_steps.rb:33
    And I fill in "Login" with "bobrobcom"                                                                             # features/step_definitions/web_steps.rb:39
    And I fill in "Email" with "my@email.com"                                                                          # features/step_definitions/web_steps.rb:39
    And I fill in "Password" with "123456"                                                                             # features/step_definitions/web_steps.rb:39
    And I fill in "Password confirmation" with "123456"                                                                # features/step_definitions/web_steps.rb:39
    And I press "Sign up"                                                                                              # features/step_definitions/web_steps.rb:27
    Then I should see "Your account has been created. A confirmation was sent to your e-mail."               # features/step_definitions/web_steps.rb:107
    And I should receive an email                                                                                      # features/step_definitions/email_steps.rb:51
    When I open the email                                                                                              # features/step_definitions/email_steps.rb:72
    Then I should see "Welcome bobrobcom!" in the email body                                                           # features/step_definitions/email_steps.rb:96
      expected "<p>Welcome my@email.com!</p>\n\n<p>You can confirm your account through the link below:</p>\n\n<p><a href=\"http://stils.dev/users/confirmation?confirmation_token=d9ZXliqfTArb2cNmwPzL\">Confirm my account</a></p>\n" to include "Welcome bobrobcom!" (RSpec::Expectations::ExpectationNotMetError)
      ./features/step_definitions/email_steps.rb:97:in `/^(?:I|they) should see "([^"]*?)" in the email body$/'
      features/manage_accounts.feature:21:in `Then I should see "Welcome bobrobcom!" in the email body'
    When I follow "Confirm my account"                                                                                 # features/step_definitions/web_steps.rb:33
    Then I should see "Your account was successfully confirmed. You are now signed in."                                # features/step_definitions/web_steps.rb:107
    When I log out                                                                                                     # features/step_definitions/user_steps.rb:9
    And I go to the reset password page                                                                                # features/step_definitions/web_steps.rb:23
    And I fill in "Email" with "my@email.com"                                                                          # features/step_definitions/web_steps.rb:39
    And I press "Send me reset password instructions"                                                                  # features/step_definitions/web_steps.rb:27
    Then I should see "You will receive an email with instructions about how to reset your password in a few minutes." # features/step_definitions/web_steps.rb:107
    And I should receive an email                                                                                      # features/step_definitions/email_steps.rb:51
    When I open the email                                                                                              # features/step_definitions/email_steps.rb:72
    Then I should see "Hello bobrobcom!" in the email body                                                             # features/step_definitions/email_steps.rb:96
    When I follow "Change my password" in the email                                                                    # features/step_definitions/email_steps.rb:166
    Then I should see "Set your new password"                                                                          # features/step_definitions/web_steps.rb:107

Failing Scenarios:
cucumber features/manage_accounts.feature:10 # Scenario: Signing up and resetting the password

和app / views / users / confirmation_instructions.erb:

<p>Welcome <%= @resource.login %>!</p>

<p>You can confirm your account through the link below:</p>

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

另外,如果有帮助,这里是我已重写的控制器:

| | |~users/
| | | |-confirmations_controller.rb
| | | |-passwords_controller.rb
| | | |-registrations_controller.rb
| | | |-sessions_controller.rb
| | | `-unlocks_controller.rb

如何解决此问题?

谢谢!

trans by 2020-02-18T01:42:17Z

Rails 4 + Devise:密码重置始终在生产服务器上给出“令牌无效”错误,但在本地运行良好。

我已经设置了可以使用Devise的Rails 4应用程序,但是我遇到了密码重置问题。 我已经设置了邮件程序,并且密码重置电子邮件可以正常发送。 提供的链接已分配了正确的reset_password_token,我已与该数据库进行了检查。 但是,当我使用正确格式的密码提交表单时,会出现错误,表明重置令牌无效。

但是,完全相同的代码可以通过rails s在本地正常工作。电子邮件发送成功,我实际上可以重设密码。 我使用的代码只是标准的Devise代码,我没有覆盖任何代码。

也许与Apache有关? 我不太熟悉。 有人有什么想法吗?

trans by 2020-02-09T05:56:25Z

如何从Rails控制台使用Devise登录用户?

加载Rails控制台后,应该如何登录用户?

Devise提供了一个可以在测试中使用的测试助手,而我尝试在控制台中使用它:

>> include Devise::TestHelpers
>> helper.sign_in(User.first)

但是我得到:

NoMethodError: undefined method `env' for nil:NilClass

无论如何,我想使用真正的设计助手而不是测试助手。 有什么办法可以做到这一点?

trans by 2020-02-05T19:05:35Z

devise-如何为编辑操作指定devise_parameter_sanitizer?

我已经将Devise添加到我的Rails 4应用程序中,并成功将用户名等添加到了我的用户模型中。 此外,我能够使用lazy way™(即,

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) } 
    end
end

但是,我尝试了

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
  devise_parameter_sanitizer.for(:edit) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end

但这不能按预期方式工作(当用户通过edit动作调用时未存储用户名)。 为了使它正常工作,我还需要做其他事情吗? 谢谢!

trans by 2020-01-26T12:00:57Z

devise-Rails 3-Active_admin可以使用现有的用户模型吗?

Active Admin可以使用我当前的Devise用户模型吗? 它已经有一个名为admin的列,如果是true,我想在转到/admin时绕过Active admin登录。

这可能吗?

当前路线:

#Active admin
ActiveAdmin.routes(self)

#Devise
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users, :path => "account"

其余的基本上是标准的Devise + Active admin

trans by 2020-01-23T19:15:58Z

Rails和Devis的强大参数

我正在使用devise的rails 4.0分支以及ruby 2.0.0p0和Rails 4.0.0.beta1。

这是我要检查是否以正确的方式执行的问题,或者是否应该做其他事情。 我敢肯定,迁移到Rails 4.0的很多人都面临着同样的问题(在搜索类似的东西之后)。

我已阅读以下链接:

  • 设计和强大的参数
  • [https://gist.github.com/kazpsp/3350730]
  • [https://github.com/plataformatec/devise/tree/rails4#strong-parameters]

现在,使用devise创建了一个User模型,使用上述要点创建了以下控制器(并确保将其包括在我的route文件中)。 我的额外参数是first_name和last_name。

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

我还有什么需要做的吗? 这是从现在开始执行操作的最佳方法(因为删除了attr_accessor)。 我的表格似乎运行良好(新的和更新的)。 要点说使用“ resource_params”,但是在我的服务器日志中总是出现“ Unpermitted parameters”错误。

trans by 2020-01-05T12:32:09Z

Rails&Devise:如何在没有布局的情况下呈现登录页面?

我知道这可能是一个简单的问题,但我仍在尝试弄清楚Devise ...

我想在登录页面上输入render :layout => false; 我该如何使用Devise?

trans by 2019-12-28T18:51:46Z

ruby on rails-登录fai后设计重定向

我发现的所有问题都与成功登录帮助程序有关。after_sign_in_path_for(resource)

我在网站的索引中有一个登录表单,当登录失败时,它将重定向到“ users / sign_in”

但是,登录失败时如何重定向到“ site#index”?

trans by 2019-12-25T13:44:08Z

ruby on rails-注册用户时未定义的局部变量或方法“ unconfirmed_email”?

我刚刚在应用程序中安装了Devise,配置了视图和所有内容。 但是,当我单击“注册”按钮时,出现此错误:

NameError in Devise::RegistrationsController#create
undefined local variable or method `unconfirmed_email' for #<User:0x00000103721b28>

为什么是这样? 另外,我正在使用tlsmail通过我的gmail企业帐户发送电子邮件。 这也可能是一个问题。

trans by 2019-11-05T08:16:36Z

ruby on rails-设计-创建具有确认的用户帐户,而不发送电子邮件?

我将设计与Facebook集成在一起。 现在,当用户使用其Facebook帐户登录后创建用户帐户时,

  user = User.create(:email => data["email"], 
                     :password => Devise.friendly_token[0,20]) 
  user.confirmed_at = DateTime.now
  user.save!

即使已确认帐户,仍会触发确认电子邮件。 您知道如何关闭电子邮件触发功能吗?

trans by 2019-10-24T09:18:02Z

ruby on rails-设计-创建具有确认的用户帐户,而不发送电子邮件?

我将设计与Facebook集成在一起。 现在,当用户使用其Facebook帐户登录后创建用户帐户时,

  user = User.create(:email => data["email"], 
                     :password => Devise.friendly_token[0,20]) 
  user.confirmed_at = DateTime.now
  user.save!

即使已确认帐户,仍会触发确认电子邮件。 您知道如何关闭电子邮件触发功能吗?

trans by 2019-10-12T00:58:38Z

红宝石-rails 4中secret_key_base的用途是什么

我是Rails 4的新手,不了解Rails 4中2556050573191191808001下secret_key的使用。您能解释一下这个概念吗?

另外,当我在生产环境中工作时,系统会提示我设置2556050573191180180、secret_key_baseconfig.secret_key和2556050573191808808。但是,我可以使用2556050573191808808命令生成一个新的机密。

开发和生产环境之间有什么区别?

每次生成时将其与2556050573191191808001添加在一起,它如何与新生成的secret_key匹配?

如何用其他服务器保护应用程序?

trans by 2019-10-05T15:43:50Z

ruby on rails-设计没有密码的更新用户

我想在设计时更新没有密码的用户属性。 情况是这样的,如果密码和密码确认字段不为空,那么我需要设计错误,如果它们为空,则需要更新其他用户属性。 我怎样才能通过设计做到这一点?

提前致谢!

trans by 2019-09-25T10:46:14Z

Ruby on Rails-设计和多个“用户”模型

我正在使用Rails 3.2和devise 2.0,而我对Rails还是很陌生。

要求

我想要实现以下目标:

  • 具有2个或更多“用户”模型,例如。 会员,客户,管理员
  • 所有型号共享一些必填字段(例如,电子邮件和密码)
  • 每个模型可能都有一些唯一的字段(例如,公司仅针对客户)
  • 某些字段可能是共享的,但没有相同的验证(例如,名称对于客户是必需的,对于成员而言是可选的)
  • 在注册过程中必须填写所有字段,因此表格是不同的
  • 登录表单应该唯一

可能的解决方案

我搜索并搜索了StackOverflow很长时间了,但是对我来说似乎没有什么合适的(我是Java人士,很抱歉:),现在我很困惑。 提出了两种解决方案:

单一设计用户

这是最常见的答案。 只需创建默认的devise用户并在Member-> User和Customer-> User之间创建关系。我在这里关心的是如何为每个模型实现定制的注册过程? 我尝试了不同的事情,但一切都糟透了!

多个设计用户

这解决了自定义注册过程,并且对我来说似乎是正确的,但是唯一的登录表单是阻止程序。 我找到了关于SO(Devise-从两个模型登录)的答案,该答案建议覆盖Devise :: Models :: Authenticatable.find_for_authentication(conditions)。这似乎很复杂(?),并且由于我是Rails的新手,所以我想知道是否可行?

谢谢你的建议!

trans by 2019-09-24T17:15:57Z

ruby on rails - 使用devise valid_password的奇怪问题?

在过去的两个小时里,我一直在尝试调试设计中的一个奇怪的问题,这不是让我登录。

这也是我所指的东西:

password 
=> 'vinodsobale'

password == 'vinodsobale'
=> true

resource.valid_password?(password)

=> false

resource.valid_password?('vinodsobale')

=> true

附上截图:

enter image description here注意:我在设计中启用了调试器,因此上面的代码是设计内部代码。

对我来说,它似乎是Devise.secure_compare中的一个问题。

trans by 2019-09-19T07:16:09Z

rails - 对于json设计请求,“警告:无法验证CSRF令牌真实性”

如何检索CSRF令牌以传递JSON请求?

我知道出于安全原因,Rails正在检查所有请求类型(包括JSON / XML)上的CSRF令牌。

我可以放入我的控制器<%= form_authenticity_token %>,但我会失去CSRF保护(不建议:-))。

这个类似的(仍未被接受的)答案暗示

使用<%= form_authenticity_token %>检索令牌

问题是如何? 我是否需要先对我的任何页面进行调用以检索令牌,然后使用Devise进行真正的身份验证? 或者它是一个一次性的信息我可以从我的服务器获得然后一致地使用(直到我在服务器本身手动更改它)?

trans by 2019-09-18T21:13:20Z

ruby - 从Rails cons重置密码

在运行应用程序时,如何通过电子邮件地址选择用户,然后在rails console中为Devise手动设置密码?

另外,在使用Devise时,我将在哪里查看文档以涵盖有关操作帐户的更多详细信息?

trans by 2019-09-15T22:25:08Z

Rails 5,Undefined method`for'for#<Devise on line devise_parameter_sanitizer。

我正在使用Rails 5

我在模型用户中添加了新的字段用户名。

class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:username)  
  end
end

在注册期间显示错误:未定义的方法`for'for#您的意思是? 叉子

跟踪:

NoMethodError(未定义的方法`for for for#你的意思是? 叉子):

app/controllers/users/registrations_controller.rb:7:in `configure_permitted_parameters'
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (5.0ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.9ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (118.1ms)

谁可以帮忙? 怎么解决这个问题?

trans by 2019-09-11T11:04:37Z

ruby on rails - 如何在Devis中验证用户的密码

我在使用rails中的devise gem时遇到了匹配用户密码的问题。 存储在我的数据库上的用户密码是encrypted_password,我试图通过密码查找用户,但我不知道如何匹配我的数据库中的表单和encrypted_password的密码。

User.find_by_email_and_password(params[:user][:email], params[:user][:password])
trans by 2019-08-10T07:14:31Z

ruby on rails - 设计 - 我如何禁止某些用户登录?

我在我的应用程序中使用Devise进行身份验证。

我如何禁止某些用户登录 - 禁用某个用户?

trans by 2019-08-06T23:55:37Z

1 2 下一页 共2页