【问题标题】:view/page specific javascript(coffeescript) in rails在rails中查看/页面特定的javascript(coffeescript)
【发布时间】:2014-05-02 07:45:25
【问题描述】:

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

我在 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 = () ->

两个不同的视图(显示和索引)共享函数 1 和 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

提前致谢!!

【问题讨论】:

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


    【解决方案1】:

    您的资产路径很奇怪。将文件“show.js.coffeescript”放在“app/assets/javascripts/restaurant/show/”文件夹下,并在视图或布局中尝试这种格式:

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

    您还可以添加条件:

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

    【讨论】:

    • 所以我在我的餐厅/节目视图中添加了 ,但它仍然无法正常工作....
    猜你喜欢
    • 2014-12-06
    • 2012-01-19
    • 1970-01-01
    • 2022-08-12
    • 2018-06-18
    • 2018-04-27
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多