Передача user_id через params, а затем проверка user_id в контроллере не работает - PullRequest
0 голосов
/ 06 ноября 2011

В контроллере событий есть действие remove_attendee.Я передаю ему: user_id пользователя для удаления и: id события для удаления пользователя из.

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

post "/remove_attendee/:user_id" => "events#remove_attendee", :as=>:remove_attendee

, тогда я передаю current_user.id как: user_id как таковой:

<%= button_to 'Decline Event', remove_attendee_event_path(:user_id => @current_user.id), 
                                                              :method => :post,
                                                              :class => "button" %>

Однако, когда я проверяю дважды: user_id == current_user.идентификатор в моем контроллере событий, он не работает:

def remove_attendee
    session[:return_to] = request.referrer
    @event = Event.find(params[:id])
    if params[:user_id] == current_user.id
      if @event.remove_attendance(params[:user_id])
        flash[:success] = "User removed from event."
      else
        flash[:error] = "Could not remove user"
      end
    else
      flash[:error] = "Could not remove user"
    end
    redirect_to session[:return_to]
  end

В конечном итоге я хочу, чтобы владелец события (@ event.owner_id) мог также удалять участников ... но это та часть, котораяломаетсяЭто должно работать ... Я проверяю значение, которое я только что передал.Я помещаю некоторую отладочную информацию в:

def remove_attendee
    session[:return_to] = request.referrer
    @event = Event.find(params[:id])
    flash[:pass] = false
    flash[:test1] = params[:user_id]
    flash[:test2] = current_user.id
    if params[:user_id] == current_user.id
      flash[:pass] = true
      if @event.remove_attendance(params[:user_id])
        flash[:success] = "User removed from event."
      else
        flash[:error] = "Could not remove user"
      end
    end
    redirect_to session[:return_to]
  end

, когда страница перезагружается после запуска remove_attendee,: pass = false,: test1 = 1,: test2 = 1.

как это возможно, чтоэто не проходит?

1 Ответ

3 голосов
/ 06 ноября 2011

Думаю, я понял это.params [: user_id] - это строка, поэтому она не приравнивается к current_user.id, который является целым числом.Итак, я сделал это:

params[:user_id].to_i == current_user.id

это сработало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...