如何添加特定于行动的资产管道项目?

时间:2012-02-06 14:16:22

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

我正在编写一个Rails 3.2.1应用程序,我想要一些javascript代码,我想用于单个动作视图。它只是调用一个jquery插件并开始倒计时,但我想用咖啡脚本编写它,我觉得资产管道是正确的工具来做到这一点。

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

1 个答案:

答案 0 :(得分: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 - 文件中的帮助方法:

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

  4. 使用yield

    1. <%= yield :head%>添加到布局头
    2. 从您的操作视图中包含您的资源:

      <% content_for :head do %>
      <%= javascript_include_tag 'controller_action' %>
      <% end %>
      
    3. 有关详细信息,请参阅Rails guides


      要将控制器数据传递给您的javascript,您可以执行以下操作:

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

      有关详细信息,请参阅RailCast Episode #324