/ specフォルダーのルートにあるrspecファイルに次のコードブロックがあります。
require 'spec_helper'
describe "home" do
subject { page }
before(:each) { visit root_path }
describe "page" do
it { should have_title('My Page')}
end
end
実行すると
undefined local variable or method `root_path'
これは意味がありません。 Railsチュートリアルを実行したとき、同様の設定で問題なく動作しました。誰か助けてもらえますか?
編集:
私のルートには
root "static#home"
編集2:
このトピックを再開します。ルート宣言を先頭に移動しても修正されませんでした。
編集3:
うまくいったのは、rspec構成にurl_helpersを含めることでした。これまでにこれを行う必要はありませんでした。これがうまくいった理由を誰かが答えることができますか?
名前付きルートは、デフォルトでは仕様で使用できません。次のコードをspec_helper.rb
に追加します。
RSpec.configure do |config|
config.include Rails.application.routes.url_helpers
end
Routes.rbで、root
を定義しているかどうかを確認します。このようなもの:
root :to => 'home#index'
あなたはあなたの問題を理解しました、しかし私は彼らがエラーメッセージを受け取るかもしれない別の理由を他の人に知らせたいです...
NameError: undefined local variable or method `root_path'
...それらは 「ルート」ルートの名前を変更したためです :
例えば:
root to: 'pages#landing', as: :home
これにより、home_path
およびhome_url
がアプリケーションの名前付きヘルパーとして作成されますが、root_path
およびroot_url
はundefined。
_@emaillenin
_で述べたように、_root to: "controller#action"
_ファイルに_routes.rb
_を含める必要があります
ただし、これが正しく宣言されていることを確認する必要があります。_root_path
_ファイルまたは何かの終わりにあるという理由だけで、_routes.rb
_が見つからないことを以前に知っていました。
_routes.rb
_ファイル全体を表示すると便利です