summaryrefslogtreecommitdiff
path: root/app/controllers/controller_extension/flash.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/controller_extension/flash.rb')
-rw-r--r--app/controllers/controller_extension/flash.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/controllers/controller_extension/flash.rb b/app/controllers/controller_extension/flash.rb
new file mode 100644
index 0000000..6a62351
--- /dev/null
+++ b/app/controllers/controller_extension/flash.rb
@@ -0,0 +1,33 @@
+module ControllerExtension::Flash
+ extend ActiveSupport::Concern
+
+ protected
+
+ def flash_for(resource, options = {})
+ return unless resource.changed?
+ message = flash_message_for(resource)
+ type = flash_type(resource)
+ if message.present?
+ flash[type] = [message, flash[type]].join(' ')
+ end
+ end
+
+ def flash_message_for(resource)
+ I18n.t flash_i18n_key(resource),
+ scope: :flash,
+ cascade: true,
+ resource: resource.class.model_name.human
+ end
+
+ def flash_i18n_key(resource)
+ namespace = [action_name]
+ namespace += controller_path.split('/')
+ namespace << flash_type(resource)
+ namespace.join(".")
+ end
+
+ def flash_type(resource)
+ resource.valid? ? :success : :error
+ end
+
+end