2017-03-02 18 views
0

私はここに、原因がないルートマッチに失敗しているスペックを持っているが、適切なコードは次のとおりです。RSpecのNOルートマッチ - 必要なキーが欠落している:[:ID]

describe AdminController do 
    before(:each) do 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    @admin = create(:admin) 
    @user = create(:user) 
    sign_in @admin, scope: :user 
    end 

    context "with admin user" do 
    describe "DELETE #destroy" do 
     it "deletes the contact" do 
     puts @user.inspect 
     expect{ 
      delete admin_destroy_user_path, id: @user.id 
     }.to change(Profile, :count).by(-1) 
     end 

エラー:

AdminController with admin user DELETE #destroy deletes the contact 
    Failure/Error: delete admin_destroy_user_path, id: @user.id 

ActionController::UrlGenerationError: 
    No route matches {:action=>"destroy", :controller=>"admin"} missing required keys: [:id] 

ルート:私は、私が行方不明です何かわからない

admin_destroy_user DELETE /admin/:id(.:format)        admin#destroy 

、任意の助けをいただければ幸いです!

+0

どのRSpecのバージョンを使用していますか?おそらく '@ admin.destroy_user_path、params:{id:@ user.id}'のようにidを渡す必要があります。 '@ user.id'が実際に値を返すと仮定します。 – mmichael

+0

また、 'admin_destroy_user_path(@ user.id)'を使用することもできます。 –

+0

皆さん、ありがとうございます。でも、これらのどちらもうまくいけば、params:オプションを使用して同じエラーが発生します。 Igorのオプションを使用すると、 "ActionController :: UrlGenerationError: {:action =>"/admin/2 "と一致するルートはありません:コントローラ=>" admin "}" RSpecのバージョン3.5.4も使用しています。 –

答えて

0

ご協力いただきありがとうございます。代わりに、Rails Adminを使用するようにリファクタリングしました。

関連する問題