Я думаю, вам нужно переписать контроллер регистрации, чтобы настроить ваше флеш-сообщение.
Если вы посмотрите на файл devise.en.yml, вы увидите, что используются некоторые переменные, такие как %{resource}
или %{count}
. Взглянув на оригинальный контроллер регистрации, вы можете увидеть этот код ( проверьте здесь )
# 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
конец
Я бы переписал этот контроллер и добавил бы эту строку
set_flash_message :notice, :signed_up, :username => resource.username if is_flashing_format?
Тогда в вашем файле devise.en.yml
вы сможете использовать что-то подобное
devise:
registrations:
signed_up: 'oh hello %{username}'
Скажите, сработало ли это.
Если вам нужен совет, как переписать контроллер Devise, взгляните на this
Надеюсь, это помогло.
===== ОБНОВЛЕНИЕ =====
Я проверил, и это сработало.
Хорошо, поэтому, если мы хотим углубиться, мы можем проверить 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
Но, пожалуйста, обновите ваш код, чтобы мы могли видеть, что не так.