2

有没有简单的解决方法,我如何在 ruby​​ 2.0 下继续安装旧的 rails 3-0.20?

第一个错误,由这一行引起:

<%= stylesheet_link_tag :all %>

ActionView::Template::Error (no implicit conversion of nil into String):

升级 rails 版本将是最好的,但不幸的是,在我的情况下这是不可能的。

4

2 回答 2

8

在 application.rb 的末尾使用以下行修复问题

ActionController::Base.config.relative_url_root = ''
于 2013-07-20T09:27:45.930 回答
3

我遇到了同样的问题。深入研究stylesheet_link_tag方法后,我发现问题来自这里

# actionpack-3.0.20/lib/action_view/helpers/asset_tag_helper.rb:749
if has_request && include_host && !source.start_with?(controller.config.relative_url_root)

问题是String#starts_with?。在 1.9.3 中,该方法将处理 anil作为输入。2.0.0 不允许这样做。

ruby-1.9.3> 'whatever'.start_with? nil
=> false

ruby-2.0.0> 'whatever'.start_with? nil
TypeError: no implicit conversion of nil into String

如果未将其设置为防止此问题,则更高版本的 Rails 将值设置为 '' 也可能是正确的。上面提到的修补程序确实解决了这个问题,但根本原因1.9.3 和 2.0.0 之间的差异。

于 2013-10-26T19:27:28.577 回答