Rails 3 - отсутствуют пути индекса? - PullRequest
10 голосов
/ 03 марта 2011

У меня довольно странная проблема с одним из моих приложений rails.Я думаю, что я, вероятно, делаю что-то действительно глупое, что я просто не смог идентифицировать.Моя проблема в том, что мне кажется, что мне не хватает примерно половины моих индексных путей.

Например, если мой контроллер "foos" для модели foo, у меня будет:

foos POST   /foos(.:format)      {:action=>"create", :controller=>"foos"}

Но нет опции GET, которая обычно будет выглядеть так:

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

Ниже я покажу вам свой код, чтобы помочь мне восстановить мои отсутствующие индексы маршрутов.

rout.rb:

resource :announcements, :controller => "announcements" do
  resources :comments
  member do
    post 'vote'
  end
end

маршруты для части объявлений:

announcements      POST   /announcements(.:format)      {:action=>"create", :controller=>"announcements"}
new_announcements  GET    /announcements/new(.:format)  {:action=>"new", :controller=>"announcements"}
edit_announcements GET    /announcements/edit(.:format) {:action=>"edit", :controller=>"announcements"}
                   GET    /announcements(.:format)      {:action=>"show", :controller=>"announcements"}
                   PUT    /announcements(.:format)      {:action=>"update", :controller=>"announcements"}
                   DELETE /announcements(.:format)      {:action=>"destroy", :controller=>"announcements"}

Как видите, нет get / index.В моем контроллере у меня определен простой метод индекса ...

def index
  @announcements = Announcement.all

  respond_to do |format|
    format.html
    format.xml  { render :xml => @announcements }  
  end
end

Я действительно не понимаю, почему у меня нет этого пути индекса.Это происходит и на нескольких других контроллерах.Мы будем благодарны за любую помощь.

Редактировать: В консоли app.announcements_path возвращает метод пропускает ошибку, в дополнение к другим, у которых отсутствуют пути к индексам.

1 Ответ

36 голосов
/ 03 марта 2011

Это потому, что вы используете единственную версию resources (resource).Для них не создан index маршрут действия.Вы должны изменить это на множественную версию и удалить :controller из строки тоже.

...