【问题标题】:rails 4.2.8 - stylesheet_link_tag throws ActionView::Template::Error: no implicit conversion of nil into Stringrails 4.2.8 - stylesheet_link_tag 抛出 ActionView::Template::Error: no implicit conversion of nil into String
【发布时间】:2019-03-09 11:13:35
【问题描述】:

如果我使用 rails 4.2.4(开发它的版本)到 rails 4.2.7,我正在尝试将运行完全正常的 rails 应用程序更新到 rails 4.2.7

一旦我切换到 Rails 4.2.8 或更高版本(测试了所有版本到 4.2.11),我就会得到

Failure/Error: = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true

ActionView::Template::Error:
  no implicit conversion of nil into String
  # ..../actionview-4.2.11/lib/action_view/helpers/asset_url_helper.rb:140:in `join'
  # ..../actionview-4.2.11/lib/action_view/helpers/asset_url_helper.rb:140:in `asset_path'

在 actionview-4.2.11/lib/action_view/helpers/asset_url_helper 有一个战利品,我可以看到错误发生在

File.join(relative_url_root, source)

在哪里

pry(#<#<Class:0x00000009a9aa98>>)> source
=> "/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css"

pry(#<#<Class:0x00000009a9aa98>>)> relative_url_root
=> {}

一旦我删除了所有 stylesheet_link_tags 和 javascript_include_tags,错误就不再出现(当然我所有的样式和 javascripts 都消失了)。

这是我的 app/views/layouts/application.html.haml 的相关部分

!!!
%html
  %head
    %meta{:name => "viewport", :content => "width=device-width, initial-scale=1.0"}
    %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}
    %title BrotUndButter
    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true

有什么想法吗?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

没关系。 这是这个应用程序的一个非常特殊的问题。 我一直在使用

在初始化程序中设置自定义配置选项
Rails.application.config.x.brotundbutter = Rails::Application::Configuration::Custom.new

这导致了错误。不要问我是怎么找到这个的,这太让人头疼了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    相关资源
    最近更新 更多