私は古いプラグイン "menu_helper"(レガシーコードで使用しています)で作業しています。Rails:@controllerはどこから来たのですか?
https://github.com/pluginaweek/menu_helper
次のようにこのライブラリの正面玄関があり、
module PluginAWeek
module MenuHelper
def menu_bar(options = {}, html_options = {}, &block)
puts @controller.class
MenuBar.new(@controller, options, html_options, &block).html
end
end
end
ActionController::Base.class_eval do
helper PluginAWeek::MenuHelper
end
コードは問題なくレール2.3.5で動作しますが、4.2.6に失敗しました。
@ controller.classを2.3.5に置くと、このライブラリを使用している現在のコントローラが常に返されますが、4.2.6ではNillClassになります。
この@controllerはどこから来たのですか? 4.2.6を修正して動作させるにはどうすればいいですか?
注1:これを使用するには、私はありません任意のコントローラが渡され
html = menu_bar(options,:id => 'menuid')
を呼び出す必要が
注2:私は現在、コントローラーのテストでそれを実行しています。
ありがとうございました。
どのバージョンのgemfile.lock'の中に宝石 'menu_helper'がありますか? – born4new
@ born4new私が見つけることができる最新のバージョンはかなり古い0.3.1です。古い2.3.5レールは0.1.0を使用していましたが、4.2.6では0.1.0と0.3.1を試しましたが、どちらも同じ場所で失敗しました。 (at)コントローラはnilです。おかげさまで – user534498