Link_to_remote с вложенными маршрутами - PullRequest
3 голосов
/ 11 февраля 2010

Я пытаюсь понять, как структурировать мой путь по тегу 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" } %>

Любая помощь будет потрясающей. Спасибо!

ОБНОВЛЕНИЕ:

Похоже, проблема была в моих маршрутах. У меня есть метод голосования в контроллере статей, но он не знал, как это искать. Я изменил свой файл rout.rb на этот:

group.resources :articles, :member => { :vote => :get }

Похоже, проблема может быть решена.

1 Ответ

1 голос
/ 16 февраля 2010

Да, опция: member в вашем маршрутизаторе выставит действие голосования в качестве допустимого пути. Но я думаю, что вы также можете рассмотреть возможность добавления модели голосования, а затем сказать, что статья has_many: голоса.

Тогда у вас будет VotesController, а у вашего маршрутизатора будет map.resources :articles, :has_many => :votes, что позволяет использовать URL-адреса, такие как / article / 1 / голосования и т. Д.

Вы можете счесть излишним иметь отдельную модель для голосов, но в течение срока службы вашего приложения может оказаться полезным отследить, кто за что проголосовал, за что и т. Д.

Опять же, если ваш сайт очень маленький, вам может никогда не понадобиться эта функциональность. Это тот тип компромисса, который вы должны учитывать при моделировании вашего домена. Использование ресурсов RESTful лишь подчеркивает тот факт, что вы выходите за рамки нормы:)

...