Как добавить ссылку «+1» в приложение Rails 3, которое при нажатии увеличивает значение Upvotes на 1? - PullRequest
3 голосов
/ 17 августа 2011

Я новичок в программировании.

Я создал скаффолд Ideas.Модель имеет поля: Описание (строка), Upvotes (целое число), Downvotes (целое число).

Все обычные действия в файле ideas_controller.rb - Индекс, Показать, Новый, Редактировать, Создать, Обновить, Уничтожить.

Вместо того, чтобы рассказать вам, как я пытался сделать следующее, я просто спрошу:

Как добавить ссылку «+1» рядом с «Показать», 'Edit', 'Destroy' ссылки, которые при нажатии увеличивают значение Upvotes на 1 для этой идеи?

Заранее спасибо.

EDIT (С помощью "Skydreamer" яразобрался!)

Я настраиваю route.rb на:

   resources :ideas do
     member do
       get 'upvote'
     end
   end

Я добавляю следующее к идеям index.html.erb:

<td><%= link_to '+1', upvote_idea_path(idea) %></td>

Примечание: если вы не включите (идея) , вы получите ошибку, подобную этой:

Нет совпадений маршрута {: action => "upvote",: controller => "ideas"}

Я добавляю в ideas_controller.rb следующее:

    def upvote
      @idea = Idea.find (params[:id])
      @idea.upvotes = @idea.upvotes + 1
      @idea.save
      redirect_to(ideas_url)
    end

Ответы [ 2 ]

4 голосов
/ 17 августа 2011

В следующих строках я скажу upvote, но для downvote это тоже самое.

Сначала создайте маршрут участника upvote, затем вы можете связать свой вид шоу с новым действием, используя upvote_idea_path.

Во-вторых, создайте действие upvote в контроллере, которое увеличивает количество голосов на 1, и все готово. Вот и все.

0 голосов
/ 17 августа 2011

Вы можете достичь этой функциональности с самоцветом thumbs_up . Он также совместим с Rails 3.

...