为了账号安全,请及时绑定邮箱和手机立即绑定

Rails 3.1 Asset Pipeline:如何加载特定于控制器的脚本?

/ 猿问

Rails 3.1 Asset Pipeline:如何加载特定于控制器的脚本?

慕仰8121524 2019-11-05 14:49:29

如果我在Rails 3.1中生成一个新的控制器,则带有控制器名称的javascript文件也会自动添加。首先,我认为只有在调用相关的控制器时,才会使用此javascript文件。

默认情况下//= require_tree .application.js-file中有指令,其中包括树上的每个javascript文件。

如何仅加载控制器特定的脚本?


查看完整描述

3 回答

?
慕雪6173905

要仅加载必要的name_of_the_js_file.js文件:


//=require_tree从中删除application.js


将您的js文件(要在加载特定页面时加载的文件)保留在资产管道中


在添加助手 application_helper.rb


def javascript(*files)

  content_for(:head) { javascript_include_tag(*files) }

end

屈服于您的布局:


<%= yield(:head) %>

将其添加到您的视图文件中:


<% javascript 'name_of_the_js_file' %>

那应该没关系


查看完整回答
反对 回复 2019-11-05
?
精慕HU

一个很好的解决方案是在您的javascript_include_tag中要求controller_name


参见http://apidock.com/rails/ActionController/Metal/controller_name/class


<%= javascript_include_tag "application", controller_name %>

controller_name.js将被加载,并在资产也,所以你可以从这里要求的其他文件。


例如,渲染cars#index将给出


<%= javascript_include_tag "application", "cars" %>

cars.js可以包含的位置


//= require wheel

//= require tyre

请享用 !


查看完整回答
反对 回复 2019-11-05
?
狐的传说

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


动态添加资产

请考虑这对于生产模式不是一个好的解决方案,因为不会预先编译您的控制器详细信息!


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


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中调用helper方法:


<%= include_related_asset(params[:controller].to_param + '_' + params[:action].to_param . 'js') %>

为控制器操作创建特定资产。例如controller_action.js


请不要忘记更改YourApp应用程序的名称。


采用 yield

添加<%= yield :head%>到布局头

从操作视图中包括您的资产:


<% content_for :head do %>

<%= javascript_include_tag 'controller_action' %>

<% end %>

请参阅Rails指南以获取更多信息。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 76 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信