在rails中查看/页面特定的javascript(coffeescript)

时间:2014-05-02 07:45:26

标签: javascript ruby-on-rails ruby-on-rails-4 asset-pipeline

我一遍又一遍地搜索我应该如何在资产管道中组织我的代码,我注意到有几个人也以不同的方式询问了这个问题但我还是找不到答案我在寻找,所以我希望这个问题会有所启发......

我在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)共享function1& 2,但每个的代码显然是针对特定页面。

我的问题是,这是正确的方法吗?有更清洁的方法吗?

以下是我尝试做的事情,显然没有效果。

我尝试将我的代码分成三个文件并将其添加到清单中,如下所示:

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

提前致谢!!

1 个答案:

答案 0 :(得分:0)

您的资产路径很奇怪。把文件' show.js.coffeescript'在app / assets / javascripts / restaurant / show /'文件夹并在视图或布局中尝试此格式:

<%= javascript_include_tag('restaurant/show/show') %>

您还可以添加条件:

<%= javascript_include_tag('restaurant/show/show') if condition %>