我收到了这个奇怪的错误消息,让我无法处理我的应用程序。
未定义的方法`start_with?'为零:NilClass
在我的app / views / layouts / application.html.erb文件中突出显示第5行:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
这个错误似乎无处不在。我第一次拿到它时,我试图加载CarrierWave。我通过ReadMe但它没有工作,所以我试图退出安装。
当我注释掉这一行时,应用程序会加载,但根本没有引导格式。我最初将我的搜索重点放在CarrierWave上,删除并重新安装了宝石,但没有成功,发现没有任何东西真正指向我正确的方向。我花了好几天时间。最后,我联系了一位导师,他从github上取下我的代码并发现没有错误。该应用程序适合他。我删除了之前已知的工作提交,它也适用于我。所以,虽然没有解决,但我可以继续处理我的应用程序(必须重新做一些工作)。现在,在处理我的应用程序时,问题再次出现。这次不是CarrierWave,只是正常的编辑。没有警告,应用程序刚刚停止加载但具有相同的start_with?我的app / views / layouts / application.html.erb文件中出现错误消息。
我花了相当多的时间在Stackoverflow上寻找答案和永久修复。
似乎对他人有用的解决方案,但对我不起作用的是: 1.删除// = require_tree。来自application.js,和 2.下载并安装node.js
有些帖子支持这样一种想法,即问题是本地的,只会出现在开发中,而不是产生。我此刻只在开发中工作。虽然还有很多其他信息,但我现在已经挣扎了好几天,并且觉得每一个可能的解决方案让我进一步陷入了一个对我来说完全陌生的兔子洞。我是一个新手...大约3个月的Ruby知识。我真的不确定在这里添加什么代码,因为我似乎无法隔离这个问题。我只知道当我注释掉第5行时,格式似乎会受到影响。(如上所述)。
当我说我已经搜索了很多时,请相信我。我非常努力,但乐观,如果有时间的话,我可以找到答案,但是我很难过,只想继续学习用Ruby / Rails创作。
我的宝石文件如下。也许我错过了一些非常明显的东西。
ruby '2.2.0'
source 'https://rubygems.org'
group :production do
gem 'pg'
gem 'rails_12factor'
end
gem 'font-awesome-sass'
gem 'bootstrap-sass'
gem 'simple_form'
gem 'devise'
gem 'seed_dump'
gem 'rails', '4.2.0'
group :development do
gem 'sqlite3'
end
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
的application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap-sprockets
我能提供的唯一其他信息是我已经搭建了我的资源并使用了devise来创建我的用户模型。
感谢。如果你可以帮助我解决这个问题,我还欠你的债。我是新人,但我想学习。
答案 0 :(得分:4)
谢谢这帮助我解决了一些事情。严重无益的错误消息。
在 _variables.scss 中注释 $ icon-font-path 为我工作。如果您看一下,您会看到有一个[转换器]评论说:
如果使用$ bootstrap-sass-asset-helper,则提供相对于的路径 资产加载路径。这是因为有些资产助手,比如 链接,不适用于文件相对路径。
如果您不使用这些字体,请将其注释掉。如果您需要使用它们,请将 $ bootstrap-sass-asset-helper 设置为 true ,并根据需要设置路径。这也对我有用。
答案 1 :(得分:3)
这里的顺序似乎很重要,如下顺序 - 如果在bootstrap之前定义了bootstrap-sprockets - 会导致此错误
@import "bootstrap-sprockets";
@import "bootstrap";
虽然此订单似乎有效
@import "bootstrap";
@import "bootstrap-sprockets";
答案 2 :(得分:0)
我遇到了同样的问题,也许我的解决方案会帮助你。检查/app/assets/stylesheets/application.scss文件中的&#34; bootstrap-spockets&#34;。评论这个解决了它。
答案 3 :(得分:0)
是否与问题相关联,取消注释&#34; bootstrap-sprockets&#34;,并将$ icon-font-path和$ icon-font-name更改为@ icon-font- path和@ icon-font-name(在Iconography下的app / stylesheets / _variables.scss)似乎解决了这个问题,而另外一个问题是我没有显示glyphicons。不确定究竟如何,但似乎都有效。我的控制器中的语法错误很可能是巧合的。虽然它不是确切的解决方案,但@TheRealSeanReid指出我的方向似乎有效。信用是值得的。谢谢@TheRealSeanReid。
答案 4 :(得分:0)
我也有这个问题,但是导致它的原因是传递给.scss文件中image-url()
帮助器的值不正确。我们有background-image: image-url('./image.png');
而不是background-image: image-url('image.png');
答案 5 :(得分:0)
就我而言,问题实际上是sprockets-rails
正在寻找加载不存在的路径。之所以发生这种情况,是因为我将正则表达式传递给要预编译的资产列表,sprocket-rails
对资产的相对路径做出了错误的猜测。此处有关此问题的更多信息:
答案 6 :(得分:0)
可能的原因:
bower-rails
宝石正在为我造成它。
bower试图加载一条不存在的路径
现在只注释掉gem及其配置文件。
针对原因的精确探针仍然取决于可用时间。 bower-rails现在对项目来说并不那么重要。
答案 7 :(得分:0)
我刚刚发现了问题所在。该问题与typescript
编译一起出现。
假设您有一个函数可以json
进行如下响应
const getSomething = () => {
return { a: 1, b: 2, c: 3}
}
您可能想要定义这样的变量
let something = getSomething()
let {a, b, c} = something
就我而言,以上代码在Rails资产中为打字稿进行了预编译,即使其语法是正确的。但是以下代码可以正常工作
let {a, b, c} = getSomething()
我希望这会对遇到此类问题的人有所帮助。
谢谢