【问题标题】:Rails Syntax error in if Statementif 语句中的 Rails 语法错误
【发布时间】:2018-03-25 20:44:12
【问题描述】:

您好,我认为我是盲人,我没有在语法中找到错误

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

expdate 包含一个日期时间戳,而 check_email_link 是一种检查邮件中链接的日期和时间的方法

存在三个语法错误

app/controllers/admin/lists_controller.rb:32: syntax error, unexpected keyword_else, expecting ')'
app/controllers/admin/lists_controller.rb:35: syntax error, unexpected keyword_end, expecting ')'
app/controllers/admin/lists_controller.rb:86: syntax error, unexpected keyword_end, expecting ')'

我是个白痴,或者我是个盲人。有人可以帮我解释一下错误吗?谢谢

【问题讨论】:

  • 您在第三行缺少 check_email_link 的右括号。
  • 在您的 check_email_link 调用中,params[:expdate] 错过了结束 )
  • 在 ruby​​ 中,您通常不会将 if 语句中的子句用括号括起来,因此您实际上可以将它们排除在外
  • 对于马里奥的评论,我相信惯例是在 if 条件周围加上括号,当且仅当它也是一个赋值。
  • @amarradi - 如果你“接受”一个答案 - 然后你可以说这个问题已经“解决”了......请记住,如果你有不同的解决方案,自己回答问题总是可以的给给定的:)

标签: ruby-on-rails if-statement web model-view-controller


【解决方案1】:

(check_email_link(params[:expdate] && @list.update(wishlist_params)) 有三个(s 和两个)s。您需要另一个) 或少一个(。我不确定在哪里,因为我不知道您的代码。

虽然我们在上面,但 if 行不应该缩进额外的级别,因为它有点像 above 行开始一个块。

【讨论】:

  • 是的,这很有趣。也许有人嫉妒是因为你跑得更快
  • 您可能投了反对票,因为在您回答之前,这已被两个 cmets (已注明为答案)覆盖,并且因为大多数人都知道这将作为“只是一个错字”问题而被关闭。
  • 1,当然 cmets 不应该用于答案,因为答案是存在的。 2,在我提交答案之前,那些 cmets 并没有出现在我的屏幕上。
猜你喜欢
  • 2011-09-22
  • 2015-09-08
  • 1970-01-01
  • 2018-08-30
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多