module RailsStuff::ResourcesController::BasicHelpers
Protected Instance Methods
URL to be used in `Location` header & to redirect after resource was destroyed. Default to index_url
.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 107 def after_destroy_url index_url end
URL to be used in `Location` header & to redirect to after resource was created/updated. Default uses `self.class.after_save_action`.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 96 def after_save_url action = self.class.after_save_action if action == :index index_url else url_for action: action, id: resource end end
Instantiate resource with attrs from `resource_params`.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 73 def build_resource(attrs = resource_params) @_resource = source_relation.new(attrs) end
Accesss resources collection.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 53 def collection @_collection ||= source_for_collection end
Builds and saves resource.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 78 def create_resource build_resource resource.save end
Flashes errors in a safe way. Joins `full_messages` and truncates result to avoid cookies overflow.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 90 def flash_errors!(errors = resource.errors, max_length = 100) flash[:error] = errors.full_messages.join("\n").truncate(max_length) if errors.any? end
Extracted from after_save_url
and after_destroy_url
because they use same value. It's easier to override this urls in one place.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 113 def index_url url_for action: :index end
Default permitted attributes are taken from class method. Override it to implement request-based permitted attrs.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 128 def permitted_attrs self.class.permitted_attrs end
Resource found by `params`
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 68 def resource @_resource ||= source_relation.find params[:id] end
Override it to return permited params. By default it returns params using `self.class.resource_param_name` and `permitted_attrs` methods.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 119 def resource_params @_resource_params ||= begin key = self.class.resource_param_name params.permit(key => permitted_attrs)[key] || params.class.new.permit! end end
End-point relation to be used as source for `collection`.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 58 def source_for_collection source_relation end
Relation which is used to find and build resources.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 63 def source_relation self.class.resource_class end
Updates resource with `resource_params`.
# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 84 def update_resource(attrs = resource_params) resource.update(attrs) end