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.