2012-02-06 22 views
4

我正在编写一个Rails 3.2.1应用程序,我有一些JavaScript代码,我想为单个操作视图放置。它只是调用一个jquery插件并开始倒计时,但我想用咖啡脚本编写它,我觉得资产管道是做这件事的正确工具。如何添加特定于操作的资产管道项目?

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

+0

看看这个:http://stackoverflow.com/questions/8566129/how-to-namespace-our-js-for-use-with-the-rails-asset-pipeline/8568208#8568208 – 2012-02-06 14:23:50

+0

关于访问对可变部分,有一个railscast。 [将数据传递给Javascript](http://railscasts.com/episodes/324-passing-data-to-javascript)。 =) – 2012-02-20 10:31:36

回答

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. 添加<%= yield :head%>到您的布局头
  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了解更多信息。