我的html.erb页面中没有加载javascript资产

时间:2017-07-11 14:37:13

标签: javascript ruby-on-rails ruby

我正在使用:

Linux Ubuntu 16.04

ruby 2.4.0p0;

rails 5.1.1

我是rails的前身,我曾在lynda.com上关注Ruby on Rails 4 Essential Training以便学习。我现在卡在加载js资产任务。

我创建了包含js函数的“app / assets / javascripts / demo.js”文件:

function jsRoar(name) {
  alert('I am ' + name + '. Hear me roar!');
}

然后我在我的清单文件“app / assets / javascripts / public.js”中加载了这个文件。

//= require jquery
//= require jquery_ujs
//= require demo

之后我在“app / views / layouts / application.html.erb”的布局中添加了js的外部包含:

<%= javascript_include_tag "public" %>

在我的控制器中,我在“app / controllers / demo_controller.rb”中键入了我的布局

layout 'application'

最后我通过在demo / index.html.erb中键入这些js代码来调用我的函数:

<%= link_to('Roar', '#', :onclick => "jsRoar('Yassser');return true;") %>   
<%= javascript_tag("jsRoar('Rails');")%>

之后我在我的chrome控制台中获得了“未定义的功能”并且警报没有出现。我已经在同一个html.erb中定义了该函数,它可以工作,所以这不是我认为的javascript问题。 我还必须提一下,首先当我运行我的服务器时,我已经获得了资产编译的问题,所以我通过在“config / initializers / assets.rb”中添加这一行来修复:

Rails.application.config.assets.precompile += %w( public.js)

我可以获得更多详情。 请帮忙。

3 个答案:

答案 0 :(得分:2)

删除&#34; demo.coffee&#34;我的问题已解决。文件。 我发现我的问题来自于我有两个同名文件(但扩展名不同)&#34; demo.js&#34;和&#34; demo.coffee&#34;。由于Rails资产助手同样处理coffescript和js文件,因此这是不明确的。 所以我删除了&#34; demo.coffee&#34;我所有的问题都解决了。 谢谢大家。 @max的最佳thnx及其在this post

中的回复

答案 1 :(得分:0)

我想这个:

<%= javascript_tag("jsRoar('Rails');")%>

应该是:

<%= javascript_include_tag("demo") %>

答案 2 :(得分:0)

查看此代码是否适用于您的视图:

box-sizing:border-box