Repeating Error: undefined method `start_with?' for nil:NilClass

Repeating Error: undefined method `start_with?' for nil:NilClass

我收到了一条奇怪的错误消息,使我无法处理我的应用程序。

未定义方法`start_with?' nil:NilClass

第 5 行在我的 app/views/layouts/application.html.erb 文件中突出显示:

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>

错误似乎不知从何而来。我第一次得到它时曾尝试加载 CarrierWave。我通过了自述文件,但没有用,所以我尝试退出安装。

当我注释掉这一行时,应用程序加载但根本没有 bootstrap 格式。我最初将搜索重点放在 CarrierWave 上,删除并重新安装了 gem,但没有成功,没有发现任何真正指向正确方向的东西。我花了几天时间。最后,我联系了一位导师,他从 github 中提取了我的代码,没有发现任何错误。该应用程序对他来说效果很好。我取消了之前的已知工作提交,它也对我有用。因此,虽然没有解决,但我可以继续开发我的应用程序(必须重新做一些工作)。现在,在我的应用程序上工作时问题再次出现。这次不是 CarrierWave,只是正常的编辑。在没有警告的情况下,应用程序刚刚停止加载但具有相同的 start_with?我的 app/views/layouts/application.html.erb 文件上的错误消息。

我花了相当多的时间在 Whosebug 上寻找答案和永久修复。

似乎对其他人有用但对我不起作用的解决方案是: 1. 删除 //= require_tree 。来自 application.js,以及 2. 下载安装node.js

一些帖子支持这样的想法,即问题是本地的并且只会出现在开发中,而不是生产中。我目前只从事开发工作。虽然还有很多其他信息,但我已经为此苦苦挣扎了好几天,觉得每一种可能的解决方案都让我更深入地了解了一个对我来说完全陌生的兔子洞。我是新手...我了解 Ruby 大约 3 个月。我什至不确定要在此处添加什么代码,因为我似乎无法隔离问题。我只知道当我注释掉第 5 行(如上)时格式似乎受到影响。

相信我,我已经搜索了很多。我很顽固,但很乐观,如果有时间我可以找到答案,但我在这里遇到了困难,只想继续学习使用 Ruby/Rails.

进行创作

我的 gem 文件如下。也许我遗漏了一些非常明显的东西。

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

我唯一可以提供的其他信息是我已经构建了我的资源并使用设计来创建我的用户模型。

谢谢。如果你能帮我解决这个问题,我就亏欠你了。我是新人,但我想学习。

我自己也遇到过同样的问题,也许我的解决方案能帮到您。检查 /app/assets/stylesheets/application.scss 文件中的 "bootstrap-sprockets"。评论这个解决了我的问题。

无论是否与问题相关,取消注释 "bootstrap-sprockets",并将 $icon-font-path 和 $icon-font-name 更改为 @icon-font-path 和 @icon-font-名称(app/stylesheets/_variables.scss under Iconography)似乎解决了这个问题,还有一个我遇到的不显示字形的问题。不确定具体如何,但似乎一切正常。我的控制器中的语法错误很可能是巧合。虽然这不是确切的解决方案,但@TheRealSeanReid 为我指出了一个似乎有效的方向。信用是应得的。谢谢@TheRealSeanReid。

谢谢,这帮助我了解了更多发生的事情。严重无用的错误消息。

_variables.scss 中注释掉 $icon-font-path 对我有用。如果你看一下,你会看到有一个 [converter] 评论说:

If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path. This is because some asset helpers, such as Sprockets, do not work with file-relative paths.

如果您不使用这些字体,请将其注释掉。如果您需要使用它们,请将 $bootstrap-sass-asset-helper 设置为 true 并将路径设置为需要。这对我也有用。

看来这里的顺序很重要,下面的顺序-如果bootstrap-sprockets定义在bootstrap之前-导致这个错误

@import "bootstrap-sprockets";
@import "bootstrap";

虽然这个命令似乎有效

@import "bootstrap";
@import "bootstrap-sprockets";

我也遇到了这个问题,但导致它的原因是传递给 .scss 文件中的 image-url() 助手的值不正确。我们有 background-image: image-url('./image.png'); 而不是 background-image: image-url('image.png');

就我而言,问题实际上是 sprockets-rails 正在寻找加载不存在的路径。发生这种情况是因为我将正则表达式传递给要预编译的资产列表,并且 sprocket-rails 对资产的相对路径做出了错误的猜测。有关此问题的更多信息,请点击此处:

https://github.com/rails/sprockets-rails/issues/269

bower-rails gem was causing it for me.

可能的原因:

bower was attempting to load a non-existent path

暂时注释掉 gem 及其配置文件。


精确探测以查明原因仍视可用时间而定。 bower-rails 目前对项目来说不是那么重要。

我刚刚发现问题所在。 typescript 编译时出现问题。 假设您有一个函数可以给出 json 响应,如下所示

const getSomething = () => {
    return { a: 1, b: 2, c: 3}
}

你可能想像这样定义变量

let something = getSomething()
let {a, b, c} = something

在我的例子中,上面的代码在 rails assets precompile for typescript 中造成了问题,即使它的语法是正确的。但是下面的代码确实可以正常工作

let {a, b, c} = getSomething()

我希望这对遇到此类问题的人有所帮助。

谢谢