rails中特定于视图/页面的javascript(coffeescript)
我已经一次又一次地搜索我应该如何在资产管道中组织我的代码,我注意到有几个人也以不同的方式询问了这个问题,但我仍然找不到我正在寻找的答案,所以我希望这个问题能给我们一些启示 我在assets/javascripts中的Javascript代码最初是这样的:rails中特定于视图/页面的javascript(coffeescript),javascript,ruby-on-rails,ruby-on-rails-4,asset-pipeline,Javascript,Ruby On Rails,Ruby On Rails 4,Asset Pipeline,我已经一次又一次地搜索我应该如何在资产管道中组织我的代码,我注意到有几个人也以不同的方式询问了这个问题,但我仍然找不到我正在寻找的答案,所以我希望这个问题能给我们一些启示 我在assets/javascripts中的Javascript代码最初是这样的: jQuery -> function1 = () -> function2 = () -> function3 = () -> function4 = () -> ...
jQuery ->
function1 = () ->
function2 = () ->
function3 = () ->
function4 = () ->
...
functionN = () ->
它变得非常混乱和不可读,因为代码的某些部分是特定于页面的,所以我尝试对其进行重构:
jQuery ->
function1 = () ->
function2 = () ->
...
functionN = () ->
if $('#id_for_show').length
function3a = () ->
function4a = () ->
if $('#id_for_index').length
function3a = () ->
function4a = () ->
这两个不同的视图(show和index)共享函数1和函数2,但每个视图的代码显然是针对特定页面的
我的问题是,这是正确的方法吗??有没有更干净的方法
下面是我试图做的,但显然不起作用
我尝试将my代码分为三个文件,并将其添加到清单中,如下所示:
assets/javascripts/restaurant/show/show.js.coffeescript => first if statement
assets/javascripts/restaurant/index/index.js.coffeescript => second if statement
assets/javascripts/restaurant/restaurant.js.coffeescript => functions that are shared
...
require_path ./restaurant
提前谢谢 你的资产路径很奇怪。将文件“show.js.coffeescript”放在“app/assets/javascripts/restaurant/show/”文件夹下,并在视图或布局中尝试此格式:
<%= javascript_include_tag('restaurant/show/show') %>
您还可以添加一个条件:
<%= javascript_include_tag('restaurant/show/show') if condition %>
所以我在我的餐厅/节目视图中添加了,但它仍然不起作用。。。。