Маршрутизация для пользовательских действий контроллера - PullRequest
2 голосов
/ 08 октября 2011

Я пытаюсь разработать сайт в стиле Reddit, который позволяет пользователям голосовать за ссылки. Функция голосования выходит за рамки базового CRUD, поддерживаемого resources :links Я написал действия вверх / вниз и связал их с представлением, но я не уверен, как обрабатывать маршрутизацию. Может ли кто-нибудь продемонстрировать, как я могу перенаправить действия пользователя? Я прикрепил свои файлы ниже. Спасибо

Я получаю эту ошибку при загрузке представления

No route matches {:controller=>"links", :action=>"up"}

Контроллер ссылок https://gist.github.com/1272577

Просмотр https://gist.github.com/1272580

Маршруты https://gist.github.com/1272584

1 Ответ

2 голосов
/ 08 октября 2011

Вы можете расширить отображение resources с помощью этого примера:

resources :links do
  member do
    match :up
    match :down
  end
end

Эти действия должны быть доступны в классе LinksController (так же, как new, create ...). Подробнее о Руководство по Ruby on Rails: Маршрутизация по Rails .

Совет: действия, изменяющие состояние объекта, не должны использовать глагол GET. Это потому, что поисковые роботы или акселераторы могут переходить по вашим ссылкам для голосования. Ваша ссылка должна быть:

<%= link_to "+", up_link_path, :method => :post, :rel => 'nofollow' %>

А в контроллере должен изменяться твой энтит только внутри if request.post?. Вы все еще должны поддерживать GET, чтобы не вызывать 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...