application.haml和application.html.haml之间的区别?
问题描述:
由于许多天,我试图理解为什么这样一个简单的链接:application.haml和application.html.haml之间的区别?
link_to 'My Link', my_path(format: :js), remote: true
总返回,而不是执行JavaScript位于我file.js.erb完整的HTML文档:
alert('hello world')
[...]
后调试的时间,我发现了原因:
当我重新命名我的主要布局文件如:application.haml
它呈现完整的HTML文档:
Started GET "/my_path/2.js" for 127.0.0.1 at 2016-03-05 12:28:20 +0100
Processing by MyController#show as JS
Rendered my_path/show.js.erb within layouts/application (0.1ms)
Rendered layouts/_sidebar.html.erb (18.9ms)
Rendered layouts/_headbar.haml (0.5ms)
Rendered layouts/_flash_messages.html.haml (0.2ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 102ms (Views: 59.3ms | ActiveRecord: 2.9ms)
当我如重命名我的主要布局文件:application.html.haml
它正确地执行JavaScript和运行我的的Hello World弹出:
Started GET "/my_path/8.js" for 127.0.0.1 at 2016-03-05 12:28:34 +0100
Processing by MyController#show as JS
Rendered my_path/show.js.erb (0.1ms)
Completed 200 OK in 24ms (Views: 21.8ms | ActiveRecord: 0.4ms)
根据我的布局的不同文件名,为什么JavaScript行为有差异?
答
正如BroiSatse说:
这不是JavaScript的行为,它是如何为 模板轨的搜索。首先搜索
<action_name>.<templating-engine>
文件,然后搜索<action_name>.<format><templateing-engine>
。所以当 你有没有格式的通用模板,它将采取所有格式的 。
这不是JavaScript行为,它是如何搜索模板。首先搜索'。'文件,然后搜索'。 '。因此,如果您的通用模板没有格式,则会采用所有格式。 –
BroiSatse
如果其中一个视图模板缺失,轨道应报告错误,告诉它如何搜索它,包括路径,格式等。使用这些信息,您将知道搜索顺序。 – canoe