0
コントローラのアクションにマップするカスタムルートを自分のコントローラに設定しようとしていますが、ルートをテストするときにルートが一致しないというメッセージが表示されます。ルーティングアサーションがルートを認識しない
routes.rbを
MyEngine::Engine.routes.draw do
resources :lead_emails, except: [:new, :edit, :show]
get 'lead_emails/send_out_emails/:idea_id', to: 'lead_emails#send_out_emails', as: 'send_out_emails'
end
すくいルート
Routes for MyEngine::Engine:
lead_emails GET /lead_emails(.:format) my_engine/lead_emails#index
POST /lead_emails(.:format) my_engine/lead_emails#create
lead_email PATCH /lead_emails/:id(.:format) my_engine/lead_emails#update
PUT /lead_emails/:id(.:format) my_engine/lead_emails#update
DELETE /lead_emails/:id(.:format) my_engine/lead_emails#destroy
send_out_emails GET /lead_emails/send_out_emails/:idea_id(.:format) my_engine/lead_emails#send_out_emails
は私が
test "should generate send out emails route" do
assert_generates('lead_emails/send_out_emails/1',
{controller: 'my_engine/lead_emails', action: 'send_out_emails', idea_id: "1"})
end
ActionController::UrlGenerationError:
No route matches {:action=>"send_out_emails", :controller=>"my_engine/lead_emails", :idea_id=>"1"}
test "should recognize send out emails route should exist" do
assert_recognizes(
{controller: 'my_engine/lead_emails', action: 'send_out_emails', idea_id: "1"},
'lead_emails/send_out_emails/1')
end
No route matches "/lead_emails/send_out_emails/1"
狂気の事があればということで、このルートにさまざまな方法をテストしようとしています私は助けを使うそれは動作します。
test "should send out emails" do
get send_out_emails_path(@idea.id)
assert_response :success
end
このテストに合格します。どうすればこのルートをテストできますか?かなりストレートなようだが、それは私を夢中にさせている!私はコントローラのmy_engine接頭辞を付けて試してみましたが、何の示唆も得られませんでした。