Hello 

I have a small research and wanna know what Rails-core team thinking about 
this problem (if it is problem).

By some reason Rails allow us use view template or layout without explicit 
extension. 
For example we can use `app/views/layouts/application.erb` instead 
`app/views/layouts/application.html.erb` or any other a popular template 
system like `haml` or `slim` without throw any errors. All works as 
expected but when we try render XHR 
request, ActionView::Resolver::PathResolver missing format when try 
`extract_handler_and_format_and_variant` from path.
 
https://github.com/rails/rails/blob/master/actionview/lib/action_view/template/resolver.rb#L249
  def extract_handler_and_format_and_variant(path, default_formats)
      pieces = File.basename(path).split(".")
      pieces.shift

      extension = pieces.pop
      unless extension
        ActiveSupport::Deprecation.warn(<<-MSG.squish)
          The file #{path} did not specify a template handler. The default 
is
          currently ERB, but will change to RAW in the future.
        MSG
      end


      handler = Template.handler_for_extension(extension)
      format, variant = pieces.last.split(EXTENSIONS[:variants], 2) if 
pieces.last
      format  &&= Template::Types[format]
       
      [handler, format, variant]
    end
  end

format, variant = pieces.last.split(EXTENSIONS[:variants], 2) if pieces.
last this expression assign nil to format, so all other works with nil.

So where is a problem here?

If we have action that's should remote render only async.js.erb template:

class HomeController < ApplicationController
  def index
  end

  def async
  end
end

This render home/async.js.erb within layouts/application. It is 
not expected behavior. 

Why are my JS views rendering with my HTML layout wrapped around them? 
<https://coderwall.com/p/vlgzgq/rails-why-are-my-js-views-rendering-with-my-html-layout-wrapped-around-them>

js.erb file not being executed 
<http://stackoverflow.com/questions/27126591/js-erb-not-executing-javascript-but-is-processed-rails>

and many other people with the same problem what i see on SO.

I stepped on a rake these too :)
This is very hard to find problem

Only if add layout: false this working properly(or add html extension).
 But i found this strange and not useful. I think this is Rails feature and 
should happen without explicit to declare.
.

def async
  layout: false
end

Thanks for attention.

P.S. Sorry for my poor English. 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to