2

のRails 3.1.0 存在しないルートに言及しているようで、私はインスタンス化する必要があります/ I前 親リソースをスタブネストされたリソースをスタブしますか?ネストされたリソースビューの仕様は、ネストされたリソースのビュー仕様ではRSpecの2</p> <p>

私は自分のアプリケーションで導入した新しい ネストされたリソースで、すべての表示仕様が失敗しているので、これを求めています。 。

----------- extract start ------------------------- 

    1) sub_categories/edit.html.erb renders the edit sub category form 
    Failure/Error: render 
    ActionView::Template::Error: 
     undefined method `sub_category_path' for #<#<Class: 0x0000010127d2b8>:0x000001016e2380> 
    # ./app/views/sub_categories/_form.html.erb:1:in `_app_views_sub_categories__form_html_erb__4092631658606598204_2155519360' 

    # ./app/views/sub_categories/edit.html.erb:3:in `_app_views_sub_categories_edit_html_erb___3853358586184509671_2155544160' 

    # ./spec/views/sub_categories/edit.html.erb_spec.rb:15:in `block (2 levels) in <top (required)>' 
----------- extract end ------------------------- 

はここに何を私だ:予想通り:( がここに私の編集ビューの仕様がどのように見えるかだ

----- "./spec/views/sub_categories/edit.html.erb_spec.rb" - start -------- 


require 'spec_helper' describe "sub_categories/edit.html.erb" do before(:each) do 
    @sub_category = assign(:sub_category, stub_model(SubCategory, 
     :name => 'International interest rates', 
     :description => 'Comprehensive rates covering Australia, NZ, Malaysia and Singapore', 
     :category_id => 3, 
     :created_by => 1, 
     :updated_by => 1 
    )) end it "renders the edit sub category form" do 
    render 
    # Run the generator again with the --webrat flag if you want to use webrat matchers 
    assert_select "form", :action => category_sub_categories(@sub_category), :method => "post" do 
     assert_select "input#sub_category_name", :name => "sub_category[name]" 
     assert_select "textarea#sub_category_description", :name => "sub_category[description]" 
    end end end 
--- "./spec/views/sub_categories/edit.html.erb_spec.rb" - end -------- 

ここでは、障害のエキスですけれども、私はそれを手動でテストしたときに、ネストされた リソースが の作品

----- app/views/sub_categories/_form.html.erb start --------------------- 

<%= form_for [@category, @sub_category] do |f| %> <% if @sub_category.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@sub_category.errors.count, "error") %> prohibited this sub_category from being saved:</h2> 
     <ul> 
     <% @sub_category.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> <% end %> <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> </div> <div class="field"> 
    <%= f.label :description %><br /> 
    <%= f.text_area :description %> </div> <div class="actions"> 
    <%= f.submit %> </div> <% end %> 

----- app/views/sub_categories/_form.html.erb end --------------------- 

のような部分的なルックスを形成することはここで私は、「すくいルート」を実行したときに、私が見たものです。

------- routes start ---------------------------  category_sub_categories GET /categories/:category_id/ sub_categories(.:format) {:action=>"index", :controller=>"sub_categories"} 
          POST /categories/:category_id/ sub_categories(.:format) {:action=>"create", :controller=>"sub_categories"} new_category_sub_category GET /categories/:category_id/ sub_categories/new(.:format) {:action=>"new", :controller=>"sub_categories"} edit_category_sub_category GET /categories/:category_id/ sub_categories/:id/edit(.:format) {:action=>"edit", :controller=>"sub_categories"} 
    category_sub_category GET /categories/:category_id/ sub_categories/:id(.:format) {:action=>"show", :controller=>"sub_categories"} 
          PUT /categories/:category_id/ sub_categories/:id(.:format) {:action=>"update", :controller=>"sub_categories"} 
          DELETE /categories/:category_id/ sub_categories/:id(.:format) {:action=>"destroy", :controller=>"sub_categories"} 
       categories GET /categories(.:format) {:action=>"index", :controller=>"categories"} 
          POST /categories(.:format) {:action=>"create", :controller=>"categories"} 
       new_category GET /categories/ new(.:format) {:action=>"new", :controller=>"categories"} 
      edit_category GET /categories/:id/ edit(.:format) {:action=>"edit", :controller=>"categories"} 
        category GET /categories/:id(.:format) {:action=>"show", :controller=>"categories"} 
          PUT /categories/:id(.:format) {:action=>"update", :controller=>"categories"} 
          DELETE/categories/:id(.:format) {:action=>"destroy", :controller=>"categories"} 
         root  /
------- routes end --------------------------- 

フォームパーシャルは親リソース とネストされたリソース(すなわち、 "form_for [@category, @sub_category]")。 それは私が を指定していない経路、sub_category_pathを呼び出しているようです。

フォームパーシャルが呼び出された編集/作成フォームを作成すると、エラーが発生します。

私はこれが起こっていると「RSpecの持つネストされたリソースのためのGoogleを経由して、私が持っていた 検索結果、 イェフダカッツは 'アクション3で、Railsの、およびRSpecのブック:(

に相談した理由には本当に困惑しています

誰もが私が行方不明です何を知っている場合、私は自分の考えを聞くのが大好きだ。

答えて

1

あなたcategory_idあなたは(今nilの)ビューで使用@category@sub_category.category_idではないです。

[@category, @sub_category]がされちょうどurl_for([@category, @sub_category])のショートカット。引数がnilの場合、単一のリソースパスを返します。

guideを確認してください。

+0

ありがとう、ジビエル。あなたが正しい!私はスタブされた@categoryオブジェクトでcategory_sub_categories()パスに与えられるオブジェクトを変更し、そのエラーは消えます。 – Gordon

+0

残念ながら、別のエラーが浮上しています。 失敗/エラー:_app_views_sub_categories_edit_html_erb___1129420093949643160_2199243480 './app/views/sub_categories/edit.html.erb:6:in #: Noルート一致{:コントローラは=> "sub_categories"} ActionView ::テンプレート::エラーをレンダリング'内のブロック(2つのレベル) './spec/views/sub_categories/edit.html.erb_spec.rb:21:in #<トップ(必須)>' 私は私のコントローラは "SubCategoriesController" として定義されている知っている app/controllers/sub_categories_controller.rbにあります。私はこれを調べなければならない。おそらくルートファイル。後で報告します:) ありがとうございました:) – Gordon

+0

を '。/ spec/views/sub_categories/edit.html.erb_spec.rb'に入れてください。短い答えは** yes **です。この場合、親リソースをスタブする必要があります。 – jibiel

関連する問題