我的事件控制器中有一个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.id时,它不起作用:
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.
这怎么可能没有通过?
答案 0 :(得分:3)
我想我明白了。 params [:user_id]是一个字符串,因此它不等于current_user.id这是一个整数。所以我这样做了:
params[:user_id].to_i == current_user.id
这很有用!