How to render new.js.coffee.erb in app/views?

前端 未结 2 1829
失恋的感觉
失恋的感觉 2021-02-02 08:38

Using Rails 3.1 jquery_ujs, I have a link with :remote => true, and the controller new action responds with js and render new.js.erb which contains:

$(\'#post-fo         


        
2条回答
  •  南笙
    南笙 (楼主)
    2021-02-02 09:05

    If you wish to keep the .js.coffee.erb extension here's a piece of code for Rails 4 to have Rails recognize the file as a valid view template:

    # config/initializers/coffee_erb_handler.rb
    ActionView::Template.register_template_handler 'coffee.erb', Coffee::Rails::TemplateHandler # without this there will be template not found error
    
    class ActionView::PathResolver < ActionView::Resolver
      EXTRACT_METHODS = %w{extract_handler_and_format_and_variant extract_handler_and_format} # name for rails 4.1 resp. 4.0
    
      method_name = EXTRACT_METHODS.detect{|m| method_defined?(m) || private_method_defined?(m)}
      raise 'unknown extract method name' if method_name.nil?
    
      old_method_name = "old_#{method_name}"
    
      alias_method old_method_name, method_name
      define_method(method_name) do |path, default_formats|
        self.send(old_method_name, path.gsub(/\.js\.coffee\.erb$/, '.js.coffee'), default_formats)
      end
    end
    

    (This is a contribution by cervinka on coffee-rails issue #36)

提交回复
热议问题