Sha256: 20b2bce05751f7fa7e162c7145eb076895742217b14f8ecc1b95632c53c1a6f8

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

module CanTango::Rails::Helpers::RestHelper
  CanTango.config.models.available_models.each do |model|
    class_eval %{
      def delete_#{model}_path obj, options = {}
        #{model}_path obj, {:method => 'delete'}.merge(options)
      end
    }
  end

  def link_to_new obj, user_type, options = {}
    return unless send(:"#{user_type}_can?", :create, obj)
    # use i18n translation on label
    link_to t(".create"), action_method(obj, :new)
  end

  def link_to_delete obj, user_type, options = {}
    return unless send(:"#{user_type}_can?", :delete, obj)
    # use i18n translation on label
    link_to t(".delete"), rest_action(obj, :delete, options)
  end

  def link_to_edit obj, user_type, options = {}
    return unless send(:"#{user_type}_can?", :edit, obj)
    # use i18n translation on label
    link_to t(".edit"), rest_action(obj, :edit, options)
  end

  def link_to_view obj, user_type, options = {}
    return unless send(:"#{user_type}_can?", :edit, obj)
    # use i18n translation on label
    link_to t(".view"), send(view_method(obj), obj, options)
  end

  protected

  def view_method obj
    "#{obj.class.to_s.underscore}_path"
  end

  def rest_action obj, action, options
    send action_method(obj, :edit), obj, options
  end

  def action_method obj, action
    "#{action}_#{obj.class.to_s.underscore}_path"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cantango-0.8.9.1 lib/cantango/rails/helpers/rest_helper.rb