Rails - 如何根据属性值更改设计欢迎消息

时间:2017-06-22 04:35:33

标签: ruby-on-rails devise

在我的Rails 5应用程序中,我使用Devise作为我的User模型(不使用Confirmable with Devise)。我需要做的是在使用其他Flash消息创建User后替换现有的Flash消息,具体取决于country_code的{​​{1}}值。

例如,

User

我检查了Devise's documentation,但无法弄清楚如何创建两个不同版本的成功注册消息。

我能找到的最接近的是与新会话相关的消息:

Show custom message only on sign_in

Dynamic Flash Messages in Devise

如何更改Devise的标准代码以创建变量欢迎/成功消息?

2 个答案:

答案 0 :(得分:0)

生成设计控制器:

test

这将在 app / controllers / users 目录中生成所有设计控制器。

在routes.rb中添加以下路线:

rails generate devise:controllers users

然后,覆盖devise_for :users, :controllers => { :registrations => 'users/registrations'} 操作以根据需要显示Flash消息:

您可以根据需要设置create,而不是set_flash_message!

flash[:notice] = "You're in Canada!"

答案 1 :(得分:0)

创建用户后,Devise将调用after_sign_up_path_for方法以了解重定向到的位置。您可以通过覆盖此方法来更改Flash消息。

class RegistrationsController <  Devise::RegistrationsController
  ...

  protected
  def after_sign_up_path_for(resource)
    # after the user is successfully saved
    if resource.country_code == 'CA'
      flash[:notice] = "You're in Canada!" 
    else
      flash[:notice] = "You're international!"
    end

    super
  end
end

希望它有所帮助。