Given Rails 4.2, Ruby 2.3.1.Railsビューのパスがリセットされない
理論上、Railsはビューパスを完全にリセットする必要があります(here, in the source code参照)。
ただし、コントローラのコールバックから経由でview_pathsをリセットすると、予期せぬことが発生します。
> view_paths.size
=> 2
> new_paths = view_paths.reject { |vp| rejection criteria }
> new_paths.size
=> 1
> view_paths = new_paths
> view_paths.size
=> 2
> _view_paths.size
=> 1
self._view_paths
が正常にリセットされていますが、#view_paths
はsimply being a wrapper for self._view_paths
にもかかわらず、それらの変更をピックアップしていません。 self._view_paths
が正しく、#view_paths
が正しくないのはなぜですか?
注:Railsはself._view_paths
ではなく、ビューを検索するときに#view_paths
を使用するため、これは重要です。
'self.view_paths = new_paths'は' NoMethodErrorスロー:その名前のメソッドがあるので、あなたがしていると思うコンテキストではないことを教えなければならないこと次に ' – steel
未定義のメソッド「view_pathsを=」あなたが投稿したファイルのhttps://github.com/rails/rails/blob/ec28c4fb242a9bf0632bb4dac0d0a2d949eab1b3/actionpack/lib/abstract_controller/view_paths.rb#L91 – kcdragon
コンテキストでの呼び出しが良好です。あなたの答えを更新する場合、私はupvoteに私の変更することができます。 (だから私の投票を変更私をロックされて) – steel