Я пытаюсь создать базовое приложение с двумя кнопками действий: одна для добавления положительной оценки, другая для добавления отрицательной оценки. Однако, когда я пытаюсь добавить отрицательную оценку, вместо этого добавляется положительная оценка. Мой код выглядит следующим образом.
Контроллер:
def profile
@user = User.find(params[:id])
@record = Record.where(user_id: @user.id)
@recordid = Record.find_by(user_id: @user.id)
end
def add_positive
@user = User.find(params[:id])
@recordid = Record.find_by(user_id: @user.id)
@recordid.positivescore +=1
if @recordid.save
redirect_back(fallback_location: records_path)
end
end
def add_negative
@user = User.find(params[:id])
@recordid = Record.find_by(user_id: @user.id)
@recordid.negativescore +=1
if @recordid.save
redirect_back(fallback_location: records_path)
end
end
Мой взгляд:
<%= @record.each do |user_record| %>
Positive: <%= user_record.positivescore %> <%= button_to "Add Positive Score", :action => "add_positive" %>
Negative: <%= user_record.negativescore %> <%= button_to "Add Negative Score", :action => "add_negative" %>
<% end %>
Проблема, с которой я столкнулся - всякий раз, когда я пытался добавить отрицательную оценку, она вместо этого увеличивала бы положительную оценку. Несколько часов ударившись головой о стену, я обнаружил, что это происходит из-за моего файла rout.rb.
routes.rb:
post '/profile/:id', to: 'users#add_positive'
post '/profile/:id', to: 'users#add_negative'
Это заставило меня понять, что я, вероятно, неправильно рассматриваю всю проблему, и мне не следует определять 3 отдельных метода в моем контроллере. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении, как я должен делать это?