gpt4 book ai didi

ruby-on-rails - 为什么三元运算符不能与重定向一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:36 25 4
gpt4 key购买 nike

我喜欢三元运算符。它确实清理了代码外观,但我遇到过它在 Rails Controller 中无法正常运行的情况。

我收到一个语法错误:unexpected tSYMBEG, expecting keyword_do or '{' or '('

我一直遇到这个问题,它点亮了将下面的语句更改为三元运算符。当我尝试将它与重定向语句结合使用时,它总是会发生。

我不知道这方面的规定吗?

if nexti==0 then
redirect_to :back
else
redirect_to edit_playt_path(id: actform['playt_id'], i: nexti)
end

nexti==0 ? redirect_to :back : redirect_to edit_playt_path(id: actform['playt_id'], i: nexti)

最佳答案

由于哈希的隐含性质

Ruby/Rails 将暗示您的重定向参数是一个散列,这在您的示例中有一些尴尬的含义

当 ruby​​ 暗示要重定向的参数时,它在以下情况下将其视为哈希,并将其解析为

nexti==0 ? redirect_to({:back, : redirect_to edit_playt_path(id: actform['playt_id'], i: nexti})

这是无效的,如果您明确定义您的散列/参数,它应该可以工作

nexti==0 ? redirect_to(:back) : redirect_to(edit_playt_path({id: actform['playt_id'], i: nexti}))

大多数 ruby​​/rails 开发人员会告诉您避免使用三元组,因为这样的原因,以及人类对正在发生的事情的一般理解。 Ruby 被认为是一种富有表现力的语言,所以拥抱它吧。

return redirect_to(:back) if nexti==0
redirect_to(edit_playt_path({id: actform['playt_id'], i: nexti}))

关于ruby-on-rails - 为什么三元运算符不能与重定向一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com