2011-11-07 11 views
5

、私は私のroutes.rbをファイルでは「子」Railsのルートがリソースを使用して動作していない:私のRails 3.1のアプリケーションでモデル

という名前のモデルを持って、私はラインを持っている:

resources :children 

はこちら全体routes.rbをテキスト:

:ここ

root :to => "pages#home" 

    resources :children 

がいっぱいすくいルートの結果(ルートの大部分はActiveAdminに関連していることに注意してください)です

    children GET  /children(.:format)      {:action=>"index", :controller=>"children"} 
          POST  /children(.:format)      {:action=>"create", :controller=>"children"} 
       new_child GET  /children/new(.:format)     {:action=>"new", :controller=>"children"} 
       edit_child GET  /children/:id/edit(.:format)    {:action=>"edit", :controller=>"children"} 
        child GET  /children/:id(.:format)     {:action=>"show", :controller=>"children"} 
          PUT  /children/:id(.:format)     {:action=>"update", :controller=>"children"} 
          DELETE  /children/:id(.:format)     {:action=>"destroy", :controller=>"children"} 

私は "熊手ルート" を実行すると、私は結果にこの行を参照してください。

children GET /children(.:format) {:action=>"index", :controller=>"children"} 

これは私のChildrenControllerのコードです:

 def index 
     @children = Child.all 

     @base_class = "children-index" 
     @title = "Your Children" 

     respond_to do |format| 
      format.html # children/index.html.erb 
      format.json { render :json => @children } 
     end 
    end 

    def show 
     @child = Child.find(params[:id]) 

     @base_class = "child-show" 
     @title = child_name(@child) 

     respond_to do |format| 
      format.html # children/show.html.erb 
      format.json { render :json => @child } 
     end 
    end 

私は、URLにアクセスすると「/子供「私はこのエラーを取得する:

No route matches {:action=>"show", :controller=>"children"} 

はここで完全なトレースです:

Started GET "/children" for 127.0.0.1 at 2011-11-07 13:06:24 -0600 
    Processing by ChildrenController#index as HTML 
    Child Load (0.8ms) SELECT `children`.* FROM `children` 
Rendered children/index.html.erb within layouts/application (65.0ms) 
Completed 500 Internal Server Error in 166ms 

ActionView::Template::Error (No route matches {:action=>"show", :controller=>"children"}): 
    1: <h1><%= title %></h1> 
    2: <ul> 
    3: <%= @children.each do |child| %> 
    4:  <li><%= link_to child.child_name(child), child_path(@child) %></li> 
    5: <% end %> 
    6: </ul> 
    app/views/children/index.html.erb:4:in `block in _app_views_children_index_html_erb__674498165009231817_70298485459960' 
    app/views/children/index.html.erb:3:in `each' 
    app/views/children/index.html.erb:3:in `_app_views_children_index_html_erb__674498165009231817_70298485459960' 
    app/controllers/children_controller.rb:9:in `index' 

Rendered /.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms) 

"/子供"が "ショー"アクションを実行しようとしているのはなぜですか、ショーアクションはルートが存在しないように動作するのはなぜですか?他のすべてのモデルは、これまでのところ「resource:model」命令を使ってうまくいきました。

+0

テンプレートエラーですか?何かが干渉している可能性があります –

+0

あなたはlink_toショーがあるコードの塊を提供できますか? – ck3g

+0

質問を編集して 'rake routes'の出力を追加できますか? –

答えて

5

サーバー出力には次のようになります。 Processing by ChildrenController#index as HTML ルートが正しいことを確認します。

テンプレート内では、サーバーが見つからないルートを使用しています。

ActionView ::テンプレート::エラー(Noルートマッチ{:アクション=> "ショー"、:コントローラ=> "子供"}):

1: <h1><%= title %></h1> 
2: <ul> 
3: <%= @children.each do |child| %> 
4:  <li><%= link_to child.child_name(child), child_path(@child) %></li> 
5: <% end %> 
6: </ul> 

は、より正確には、4行目では、あなたが持っていませんおそらくここに:child_path(@child)

あなたのモデルのカスタムIDを使用していますか(to_paramメソッドのオーバーライド)ですか?


ちょうどそれを明確にする、これは経路エラーではありません、あなたはあなたの全体のルートファイルを投稿することができます

+0

ああ、私は理解しています。私は、Railsでそれぞれの場所を見分けるのもちょっとだけですが、この全体的な質問から、将来のトラブルシューティングの道筋がわかりました。私はここから何をすべきか考え出すことができると思う。 – wrburgess

+1

あなたが勉強しているときに間違いをするのは大丈夫ですが、心配しないでください。 –

関連する問題