Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rails中特定于视图/页面的javascript(coffeescript)_Javascript_Ruby On Rails_Ruby On Rails 4_Asset Pipeline - Fatal编程技术网

rails中特定于视图/页面的javascript(coffeescript)

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 = () -> ...

我已经一次又一次地搜索我应该如何在资产管道中组织我的代码,我注意到有几个人也以不同的方式询问了这个问题,但我仍然找不到我正在寻找的答案,所以我希望这个问题能给我们一些启示

我在assets/javascripts中的Javascript代码最初是这样的:

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 %>

所以我在我的餐厅/节目视图中添加了,但它仍然不起作用。。。。