Rails application.html.erb where line #6 raised:TypeError: 对象不支持此属性或方法

ahtest · 2015年02月26日 · 最后由 iwetuan 回复于 2018年04月02日 · 12709 次阅读

ruby on rails 新建项目后,在创建 welcome/index 控制后,访问出错,报错内容如下:

ruby v2.1.5p273 rails v4.2.0

其它包:

gem list

*** LOCAL GEMS ***

actionmailer (4.2.0) actionpack (4.2.0) actionview (4.2.0) activejob (4.2.0) activemodel (4.2.0) activerecord (4.2.0) activesupport (4.2.0) arel (6.0.0) bigdecimal (1.2.4) binding_of_caller (0.7.2) builder (3.2.2) bundler (1.8.3) byebug (3.5.1) coffee-rails (4.1.0) coffee-script (2.3.0) coffee-script-source (1.9.1) columnize (0.9.0) debug_inspector (0.0.2) debugger-linecache (1.2.0) erubis (2.7.0) execjs (2.3.0) globalid (0.3.3) hike (1.2.3) i18n (0.7.0) io-console (0.4.2) jbuilder (2.2.8) jquery-rails (4.0.3) json (1.8.2, 1.8.1) loofah (2.0.1) mail (2.6.3) mime-types (2.4.3) mini_portile (0.6.2) minitest (5.5.1, 4.7.5) multi_json (1.10.1) nokogiri (1.6.6.2 x86-mingw32) psych (2.0.5) rack (1.6.0) rack-test (0.6.3) rails (4.2.0) rails-deprecated_sanitizer (1.0.3) rails-dom-testing (1.0.5) rails-html-sanitizer (1.0.1) railties (4.2.0) rake (10.4.2, 10.1.0) rdoc (4.2.0, 4.1.0) sass (3.4.12) sass-rails (5.0.1) sdoc (0.4.1) slop (3.6.0) sprockets (2.12.3) sprockets-rails (2.2.4) sqlite3 (1.3.10 x86-mingw32) test-unit (2.1.5.0) thor (0.19.1) thread_safe (0.3.4) tilt (1.4.1) turbolinks (2.5.3) tzinfo (1.2.2) tzinfo-data (1.2015.1) uglifier (2.7.0) web-console (2.0.0)

新建项目: rails new blogV1.3 cd blogV1.3

新建控制: rails g controller welcome index

启动服务: rails s

访问 url: http://localhost:3000/welcome/index

查找了很多地方,有说把..\blogV1.3\app\views\layouts\application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>BlogV13</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

中的 'data-turbolinks-track' => true 去除

请问有什么办法修复它,而不去除它吗?如果去除了,好像 js 不能正常工作了!

在网上找到几种解决办法,分享一下:

办法一: 将 javascript_include_tag 'application'改成 javascript_include_tag 'defaults',此方法已验证,暂时运行没问题,但在用到 delete 时,会失败。

办法二: 安装 node.js,此方法试过了,没有成功,现在试其它版本的

办法三: 在../app/assets/javascripts/application.js 中,删除 //= require turbolinks //= require_tree . 两行,此法可以解决,具体原理不是太明白,有明白的大神,还请指教一二,多谢!

关于 turbolinks 的应用可以参见:http://chloerei.com/2013/07/14/turbolinks-guide/

turbolinks.js.coffee 有错,或者说是你的环境问题

#1 楼 @huacnlee 不清楚是不是环境问题,还是包的问题

好像这个问题我有碰到过,原来好好的项目手贱更新了下 gem 就报错了 然后莫名奇妙被我修复好了(大概是还原成原来不报错的 gemfile, 按照 gemfile.lock 来弄)

#3 楼 @cqcn1991 应该是 rurbolinks 搞出来的,不用它就好了

#4 楼 @ahtest 是 turobolink, 但是我很喜欢 turobolink,我自己的项目用起来觉得很有必要

在 2015 年 2 月 18 号早上发现这个问题。到了 2015 年 2 月 28 号找到了解决的方法。我用 gem install rails 命令将 rails 版从 4.1.8 更新到 4.2.0 发现这个问题解决了。你知道吗。这次更新我用了近 2 个小时的时间哟。

我也遇到这个问题了,还在找更好的解决方法。

我把 Gemfile.lock 里的 coffee-script-source (1.9.1) 换成 coffee-script-source (1.8.0),然后重新 bundle install, 就没有这个问题了。

#9 楼 @cqcn1991 昂,谢啦,嘿嘿,成功解决!!

真的可以了。。。刚好遇到这个问题,谢谢!!

There is a problem with coffee-script-source 1.9.0 running on windows.

It seems you have to add this to your gemfile:

gem 'coffee-script-source', '1.8.0'

then do

bundle update coffee-script-source

我用这个办法解决了

#9 楼 @cqcn1991 windows 下坑死个人啊啊啊啊

我也遇到了这个问题,

windows 10
railsinstaller-3.1.1.exe
ruby 2.1.8p440 (2015-12-16 revision 53160) [i386-mingw32]
Rails 4.2.5.1

安装 nodeJS 后解决问题。 错误原因不知道,特别奇怪的是:

在安装了nodejs的环境和没有node的环境产生的源代码是一样的。
有node的环境能正常运行,没有node的环境报错。
把在有node环境运行过的项目复制到没有node的环境运行也能正常运行。
对比发现两个环境运行后的tmp目录下的cache有很多差异。

'coffee-script-source' 版本问题,把 Gemfile.lock 中'coffee-script-source' 版本改到 1.8.0 重启项目即可。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号