【问题标题】:How to use resource attribute on I18n Devise flash message如何在 I18n 设计 flash 消息上使用资源属性
【发布时间】:2023-04-01 08:10:01
【问题描述】:

我正在尝试在 Devise 使用的一个国际化字符串中使用资源属性。我创建了一个新的SessionsController,它继承自Devise::SessionsController,并在其中覆盖了create 方法,例如:

class SessionsController < Devise::SessionsController
  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message!(:notice, :signed_in)
    sign_in(resource_name, resource)
    yield resource if block_given?
    respond_with resource, location: after_sign_in_path_for(resource)
  end
end

我正在重定向到特定路径并传递resource。我可以使用 byebug 进行调试,我可以看到登录用户的资源及其属性,但我仍然不知道如何传递这些属性以便在“语言环境”消息中使用,例如:

devise:
  sessions:
    user:
      signed_in: 'You have signed in successfully. Welcome %{name}!'

目前name不打印用户名的值,所以,我想知道如何实现。

我在 _message.html.erb 部分中显示消息,例如:

<% flash.each do |key, value| %>
  <div class="alert alert-icon alert-dismissible alert-<%= key %> flash-alert" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <i class="fa fa-times" aria-hidden="true"></i>
    </button>
    <%= value %>
  </div>
<% end %>

我的路线包括 SessionsController:

devise_for :users, controllers: { sessions: 'sessions' }, skip: [:registrations]
  as :user do
    ...
    post 'login', to: 'sessions#create', as: :user_session
  end
end

POST 'login' 也指向 DeviseSessions#create 动作和控制器。

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-5


    【解决方案1】:

    您应该在options 参数中为set_flash_message! 传递name

    set_flash_message!(:notice, :signed_in, { name: resource.name })

    【讨论】:

    • 我创建了一个flash[:notice] 也使用signed_in 并将资源属性作为值传递,但这似乎是最好的方法,谢谢!
    【解决方案2】:

    我也只是在create 方法中创建了一个flash[:notice] 消息:

    def create
      ...
      flash[:notice] = I18n.t('devise.sessions.user.signed_in', name: resource.name)
      ...
    end
    

    但是@André 的回答也很完美。

    【讨论】:

      猜你喜欢
      • 2013-12-12
      • 1970-01-01
      • 2022-10-13
      • 2023-03-18
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多