Me gustaría acceder a current_user.username en mi mensaje flash después de registrarme. ¿Cómo voy a hacer esto? ¿Se puede hacer esto en el archivo devise.en.yml?idear mensaje flash personalizado
Respuesta
Creo que debe sobrescribir el controlador de registro para personalizar su mensaje flash.
Si echa un vistazo al archivo devise.en.yml, puede ver que se usan algunas variables como %{resource}
o %{count}
. Al echar un vistazo al controlador de registro original, se puede ver el código (check here)
# POST /resource
def create
build_resource(sign_up_params)
if resource.save
yield resource if block_given?
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
final
Me gustaría volver a escribir este controlador y añadir esta línea
set_flash_message :notice, :signed_up, :username => resource.username if is_flashing_format?
A continuación, en el archivo de devise.en.yml
, deberías poder usar algo así
devise:
registrations:
signed_up: 'oh hello %{username}'
Dime si eso funcionó.
Si necesita pista sobre cómo reescribir controlador que concebir y echar un vistazo a this
espero que ayudó.
===== ===== ACTUALIZACIÓN
lo probé y funcionó.
Bueno por lo que si queremos ir más profundo, podemos comprobar lib/devise/controllers/internal_helpers.rb
:
# Sets the flash message with :key, using I18n. By default you are able
# to setup your messages using specific resource scope, and if no one is
# found we look to default scope.
# Example (i18n locale file):
#
# en:
# devise:
# passwords:
# #default_scope_messages - only if resource_scope is not found
# user:
# #resource_scope_messages
#
# Please refer to README or en.yml locale file to check what messages are
# available.
def set_flash_message(key, kind, options={}) #:nodoc:
options[:scope] = "devise.#{controller_name}"
options[:default] = Array(options[:default]).unshift(kind.to_sym)
options[:resource_name] = resource_name
message = I18n.t("#{resource_name}.#{kind}", options)
flash[key] = message if message.present?
end
Pero por favor, actualice su código para que podamos ver lo que está mal.
- 1. Cuadro de mensaje personalizado
- 2. carriles - Idear signo de fracaso/autenticación no actualiza gama errores con el mensaje
- 3. Mensaje flash en redirección no funciona
- 4. mensaje flash basado en Cookie vs. sesión
- 5. jquery validator addmethod mensaje personalizado
- 6. Rieles: mensaje de validación personalizado
- 7. jQuery Validation plugin - Mensaje personalizado
- 8. Win32 cuadro de mensaje personalizado
- 9. Idear no validar contraseña/contraseña de confirmación
- 10. idear reconfirmable
- 11. Django admin, mensaje de error personalizado?
- 12. validación mensaje personalizado para carriles 3
- 13. ValidatorError personalizado (fácil de usar) mensaje
- 14. $ .mobile.showPageLoadingMsg con mensaje personalizado está fallando
- 15. MVC 3 AuthorizeAttribute Redirigir con mensaje personalizado
- 16. Mensaje de error personalizado con HTTPStatusCodeResult & jQuery
- 17. ember-data: Cómo hacer un mensaje flash de guardado/guardado
- 18. El mensaje flash desaparece al redireccionar en Symfony 2.1
- 19. ¿Es posible pasar un mensaje flash de Rails a Sinatra?
- 20. rieles: impiden mensaje flash de mostrar dos veces
- 21. representación parcial en un mensaje flash en Rails 3
- 22. Pasar el objeto entre las vistas (mensaje flash)
- 23. rieles/Diseñar - Personalizar mensaje flash (devise.en.yml) con un link_to
- 24. Cómo renderizar editar vista y publicar mensaje flash en rails3
- 25. Rails idear Sesiones Controlador
- 26. Rspec, CanCan e idear
- 27. Idear suave Confirmación
- 28. Idear con Sinatra
- 29. mensaje de error personalizado significativo para Zend RegEx Validador
- 30. Spring 3 MVC: Mostrar mensaje de validación con validador personalizado
Funcioné carriles g Controlador Registros y copiado y pegado en el código de diseño original. Luego modifiqué la línea apropiada como sugirió y el archivo devise.en.yml también. Obtengo este error: falta el argumento de interpolación en "Registrarse completo,% {nombre de usuario}" ({: nombre_de_depósito =>: usuario} dado) – chief
Actualicé mi publicación. Intenté mi consejo y funcionó para mí. – Lucas
Mmm, volviendo a leer su comentario, tengo la sensación de que olvidó decirle a Rails que use su nuevo controlador para registros. Por favor, siga eso: en config/routes.rb agregue: controllers => {: registrations => "registrations"} a su devise_for root. (ver de nuevo ese [tutorial] (https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-account-without-providing-a-contraseña)) – Lucas