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 に答える