Маршрут Rails не работает с использованием resource: model

В моем приложении Rails 3.1 у меня есть модель с именем "Child"

В моем файле routes.rb есть строка:

resources :children

Вот весь текст routes.rb:

  root :to => "pages#home"

  resources :children

Вот полные результаты rake routes (обратите внимание, что большинство маршрутов связаны с 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"}

Когда я запускаю «rake routes», я вижу эту строку в результатах:

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-адрес «/ children», я получаю следующую ошибку:

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)

Почему «/ children» пытается для выполнения действия "show", и почему действие show действует так, как будто маршрута нет? Все мои другие модели до сих пор работали отлично с использованием инструкции «ресурс: модель».

6
задан Randy Burgess 7 November 2011 в 19:29
поделиться