You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails控制器if语句语法错误排查求助

找出你的update方法中的三处语法错误

让我帮你逐一排查这段Rails控制器代码里的语法问题:

  • 括号不匹配+参数传递错误:你的if条件里,check_email_link的参数写法完全错了。原代码把params[:expdate] && @list.update(wishlist_params)整个当成了check_email_link的参数,而且if语句的左括号没有对应的右括号。正确的逻辑应该是先调用check_email_link传入params[:expdate],再把这个结果和@list.update的结果做逻辑与。修正后应该是:

    if check_email_link(params[:expdate]) && @list.update(wishlist_params)
    

    要是你想保留if的括号,记得要闭合:

    if (check_email_link(params[:expdate]) && @list.update(wishlist_params))
    
  • redirect_to的多余空格+括号:redirect_to (admin_list_url)这种写法在Ruby里会导致解析问题,方法调用的括号前不应该加空格。你可以直接去掉括号写成:

    redirect_to admin_list_url
    

    或者如果习惯加括号,要紧贴方法名:

    redirect_to(admin_list_url)
    
  • check_email_link的参数逻辑错误:原代码里check_email_link(params[:expdate] && @list.update(wishlist_params))会让check_email_link接收一个布尔值(params[:expdate]和更新操作结果的逻辑与),但你原本是想传时间戳params[:expdate]给这个方法,这不仅违背了方法的参数预期,也属于语法层面的参数传递错误——因为方法需要的是时间戳参数,而非布尔表达式。

修正后的完整代码示例:

def update
  @list = List.find_by(key: params[:id])
  if check_email_link(params[:expdate]) && @list.update(wishlist_params)
    flash[:notice] = t("update")
    redirect_to admin_list_url
  else
    flash[:error] = t("not_active")
    render 'edit'
  end
end

内容的提问来源于stack exchange,提问作者amarradi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:12:12