Неправильная структура контроллера не позволяет выполнять несколько действий - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь создать базовое приложение с двумя кнопками действий: одна для добавления положительной оценки, другая для добавления отрицательной оценки. Однако, когда я пытаюсь добавить отрицательную оценку, вместо этого добавляется положительная оценка. Мой код выглядит следующим образом.

Контроллер:

  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 отдельных метода в моем контроллере. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении, как я должен делать это?

1 Ответ

0 голосов
/ 05 мая 2018

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

post '/profile/:id/add_positive', to: 'users#add_positive'
post '/profile/:id/add_negative', to: 'users#add_negative'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...