我正在构建我的第一个 Rails 应用程序,并且正在使用 JQuery 发出 ajax POST 请求以更新资源。我正在发送_method: "PATCH"
并且正在执行正确的控制器:
def update
@buddyship = Buddyship.find(params[:id])
if @buddyship.involve? current_user && @buddyship.update(buddyship_params)
render json: { success: true }
else
render json: { success: false }, :status => 500
end
end
我首先测试标准用例,其中关系确实涉及当前用户,因此条件的第一部分评估为true
. 第二个也是,我知道是因为我试过了
def update
@buddyship = Buddyship.find(params[:id])
bool = @buddyship.update(buddyship_params)
logger.debug "bool: "+bool.to_s
if @buddyship.involve? current_user && bool
render json: { success: true }
else
render json: { success: false }, :status => 500
end
end
在我得到的日志中bool: true
。另外,记录仍会在数据库中更新。仍然不知何故,我得到了内部服务器错误而不是成功。
如果我只是使用and
而不是&&
,一切都会按我的预期工作。
if @buddyship.involve? current_user && @buddyship.update(buddyship_params)
我知道它and
的优先级低于&&
,并且赋值运算符=
介于两者之间。但在这种情况下,这似乎无关紧要,毕竟只有一个操作员!因此,它不会与其他任何东西争夺优先权。这似乎很简单。我怎么了???