在Rails 3应用程序中添加特定于页面的JavaScript的最佳方法?Rails 3有一些不引人注目的JavaScript,非常酷。但我想知道最好的方法是为特定页面添加额外的JavaScript。例如,我之前可能做过的事情:<%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %>我们现在可以用类似的东西使它不引人注目<%= f.radio_button :rating, 'positive' %># then in some other file$('user_rating_positive').click(function() {
$('some_div').show();}所以我想我的问题是在哪里/如何包含JavaScript?我不想填写该application.js文件,因为此JavaScript仅适用于此视图。我应该以某种方式为每个页面包含一个自定义JavaScript文件,还是将其粘贴在标题所查找的实例变量中?
3 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
如果你想在一个页面上包含javascript,你当然可以在页面上包含它,但是如果你想对你的javascript进行分组并利用资产管道,缩小的js等,它可以这样做并且有额外的通过将js分成仅适用于站点的某些控制器/视图/部分的组,组合并仅加载到特定页面上的js资产。
将资产中的js移动到文件夹中,每个文件夹都有一个单独的清单文件,因此,如果您有一个仅在后端使用的admin js库,则可以执行以下操作:
资产
管理
admin.js(管理员组的清单)
application.js(app全局组的清单)
全球
JS ...
JS ...
JavaScript的
在现有的application.js中
//= require jquery//= require jquery_ujs//= require_tree ./global // requires all js files in global folder
在新的admin.js清单文件中
//= require_tree ./admin // requires all js files in admin folder
通过编辑config / production.rb确保加载了这个新的js清单
config.assets.precompile += %w( admin.js )
然后调整页面布局,以便为页面头部添加一些额外的j:
<%= content_for :header %>
然后在想要包含此特定js组(以及普通应用程序组)和/或任何特定于页面的js,css等的视图中:
<% content_for :header do %> <%= javascript_include_tag 'admin' %> <% end %>
您当然可以使用css执行相同的操作,并以类似的方式将其分组以仅应用于站点的某些区域。
ibeautiful
TA贡献1993条经验 获得超5个赞
我更喜欢以下......
在您的application_helper.rb文件中
def include_javascript (file) s = " <script type=\"text/javascript\">" + render(:file => file) + "</script>" content_for(:head, raw(s))end
然后在您的特定视图中(此示例中为app / views / books / index.html.erb)
<% include_javascript 'books/index.js' %>
......似乎对我有用。
添加回答
举报
0/150
提交
取消