【问题标题】:How to add action specific asset pipeline items?如何添加特定于操作的资产管道项目?
【发布时间】:2012-02-28 00:10:33
【问题描述】:

我正在编写一个 Rails 3.2.1 应用程序,我有一些 JavaScript 代码我想为单个操作视图添加。它只是调用一个 jquery 插件并开始倒计时,但我想用咖啡脚本编写它,我觉得资产管道是执行此操作的正确工具。

我还需要访问控制器传递的变量,例如@question我该怎么做?我查看了 coffeebeans gem,但它只适用于 :remote=>true 表单和链接。

【问题讨论】:

标签: ruby-on-rails coffeescript asset-pipeline


【解决方案1】:

您的问题可以通过不同的方式解决。

动态添加资产

  1. 将以下方法添加到我们的应用程序助手中:

    module ApplicationHelper
        def include_related_asset(asset)
        #          v-----{Change this}
            if !YourApp::Application.assets.find_asset(asset).nil?
                case asset.split('.')[-1]
                    when 'js'
                        javascript_include_tag asset
                    when 'css'
                        stylesheet_link_tag asset
                end
            end
        end
    end
    
  2. layout-file 中调用辅助方法:

    <%= include_related_asset(params[:controller].to_param + '_' + params[:action].to_param . 'js') %>
    
  3. 为您的控制器操作创建特定资产。例如。 controller_action.js

使用yield

  1. &lt;%= yield :head%&gt; 添加到您的布局头部
  2. 在您的操作视图中包含您的资产:

    <% content_for :head do %>
    <%= javascript_include_tag 'controller_action' %>
    <% end %>
    

请参阅Rails guides 了解更多信息。


要将控制器数据传递给您的 javascript,您可以这样做:

    <%= javascript_tag do %>
        window.error_message = '<%= j error_message %>';
    <% end %>

请参阅RailCast Episode #324 了解更多信息。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2013-05-19
    • 1970-01-01
    • 2011-09-28
    • 2012-02-29
    • 1970-01-01
    • 2012-07-17
    • 2012-07-07
    相关资源
    最近更新 更多