我想在Devise使用的其中一個國際化字符串中使用資源屬性。我從Devise::SessionsController
創造了一個新的SessionsController
它繼承和它,我已經覆蓋create
方法,如:如何在I18n上使用資源屬性設計flash消息
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 '登陸' 所指向的DeviseSessions#創建操作和控制器。
我做了一個'flash [:notice]'也使用'signed_in'並傳遞資源屬性作爲值的工作,但它似乎是最好的方法,謝謝! –