【问题标题】: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】:
您的问题可以通过不同的方式解决。
动态添加资产
-
将以下方法添加到我们的应用程序助手中:
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
-
在layout-file 中调用辅助方法:
<%= include_related_asset(params[:controller].to_param + '_' + params[:action].to_param . 'js') %>
为您的控制器操作创建特定资产。例如。 controller_action.js
使用yield
- 将
<%= yield :head%> 添加到您的布局头部
-
在您的操作视图中包含您的资产:
<% 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 了解更多信息。