fxu*_*ser 0 ruby conditional controller ruby-on-rails ruby-on-rails-3
控制器代码:
def create
if current_user.id != params[:friend_id]
@return = { :curr_user_id => current_user.id, :params_id => params[:friend_id], :debug => 1 }
else
@return = { :curr_user_id => current_user.id, :params_id => params[:friend_id], :debug => 2 }
end
render :json => ActiveSupport::JSON.encode( @return )
end
Run Code Online (Sandbox Code Playgroud)
所以current_user.id是1并且params[:friend_id]通过ajax调用传递,它的值也是1
问题是它在这种情况下应该返回false时总是返回true ...是否有任何与被解析为字符串而不是整数的数字1有关?
params 总是字符串,使用:
if current_user.id != Integer(params[:friend_id])
Run Code Online (Sandbox Code Playgroud)
我不建议to_i,看看为什么:
"abc".to_i # => 0 which is unexpected
Integer("abc") # => raises error, which is fine
Run Code Online (Sandbox Code Playgroud)