Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'minus_mor'

# Assign a new template type
ActionView::Base::register_template_handler :ejs, MinusMOR::View
Mime::Type.register "text/javascript", :js, %w( application/javascript application/x-javascript ), %w( ejs rjs )

# Exempt .ejs from layout but works only partially
ActionController::Base.exempt_from_layout(/\.ejs$/)

class ActionView::Base
  def find_template_extension_from_handler(template_path, formatted = nil)
    checked_template_path = formatted ? "#{template_path}.#{template_format}" : template_path
    template_handler_preferences.each do |template_type|
      extension =
        case template_type
          when :javascript
            (template_exists?(checked_template_path, :ejs) && :ejs) ||
            template_exists?(checked_template_path, :rjs) && :rjs
          when :delegate
            delegate_template_exists?(checked_template_path)
          else
            template_exists?(checked_template_path, template_type) && template_type
        end
      if extension
        return formatted ? "#{template_format}.#{extension}" : extension.to_s
      end
    end
    nil
  end
end