Почему мой инкремент не работает правильно? - PullRequest
2 голосов
/ 23 августа 2011

У меня есть простая система, в которой фотографии имеют много комментариев.Я уверен, что я не делаю это правильно, но я пытаюсь создать простую систему оценки комментариев.comment.rating начинается с 0 и может идти вверх.

Это часть моего контроллера комментариев

class CommentsController < ApplicationController

  def increment
    @comment = Comment.find(params[:id])
    @comment.rating += 1
    redirect_to(@photo)
  end

end

Я думаю, что метод increment в порядке, но как я звонюэто не:

<%= link_to "+", :controller => 'comments', :method => 'increment' %>

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

Ответы [ 3 ]

1 голос
/ 23 августа 2011
<%= link_to "+" , :controller => "comments", :action => "increment", :id => comment.id %>

Имейте в виду, что обычно такое действие будет использовать POST или PUT, и в этом случае вам нужно указать: метод с: post или: put.

Если вы добавили приращение в маршрутыВы также можете использовать:

<%= link_to "+", increment_comment_path(comment.id) %>
1 голос
/ 23 августа 2011

Я полагаю, вы не передаете комментарий: id для params.

Вы можете сделать это, определив такой маршрут в вашем файле routes.rb:

match 'increment_rating/:comment_id' => 'Comments#increment', :as => 'increment_rating'

с помощьюincrement действие теперь начинается с

def increment
    @comment = Comment.find(params[:comment_id])
    ...
end

, а затем вызывается из представления с помощью

<%= link_to '+', increment_rating_path(comment.id) %>

, где comment.id дает идентификатор комментария, рейтинг которого вы хотите увеличить

1 голос
/ 23 августа 2011
<%= link_to "+" , :controller => "comments", :action => "increment", :id => @comment %>
...