【发布时间】: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