Link_to_remote с вложенными маршрутами
Я пытаюсь понять, как структурировать мой путь по тегу link_to_remote для размещения вложенных маршрутов. У меня есть модель статьи, которая принадлежит групповой модели, и с ней связаны голоса (с помощью плагина Vote_Fu). Сначала я создал код для статей, и он работал, но в процессе добавления групповой модели и обновления моих путей для всего, ссылка ниже теперь не работает. Я знаю, что он ищет new_question_path, который больше не будет работать, но я не могу понять, чем его заменить.
<%= link_to_remote "+(#{@article.votes_for})",
:update=>"vote",
:url => { :controller=>"articles",
:action=>"vote",
:id=>@article.id,
:vote=>"for"},
:html => { :class => "up" } %>
Любая помощь будет потрясающей. Спасибо!
ОБНОВИТЬ:
Похоже, проблема была в моих маршрутах. У меня есть метод голосования в контроллере статей, но он не знал, как его искать. Я изменил свой файл route.rb на этот:
group.resources :articles, :member => { :vote => :get }
Похоже, проблема может быть решена.
1 ответ
Да, опция:member в вашем маршрутизаторе выставит действие голосования в качестве допустимого пути. Но я думаю, что вы также можете рассмотреть возможность добавления модели голосования, а затем сказать, что статья has_many: голоса.
Тогда у вас будет VotesController, а у вашего роутера map.resources :articles, :has_many => :votes
, с учетом URL, таких как /article /1/ голоса и т. д.
Вы можете счесть излишним иметь отдельную модель для голосов, но в течение жизни вашего приложения может оказаться полезным отследить, кто за что проголосовал, за что и т. Д.
Опять же, если ваш сайт очень маленький, вам может никогда не понадобиться эта функциональность. Это тот тип компромисса, который вы должны учитывать при моделировании вашего домена. Использование ресурсов RESTful лишь подчеркивает тот факт, что вы выходите за рамки нормы:)