【问题标题】:Ruby on Rails - link_to with parenthesesRuby on Rails - 带括号的 link_to
【发布时间】:2013-05-08 02:16:43
【问题描述】:

抱歉,这是一个新手问题。

还有很多关于“link_to”的问题,但没有人回答我的问题,我认为这并不是 link_to 所特有的......

创建这样的链接有效

<%= link_to person.automobile_id, person %>

但是,这样尝试行不通

<%= link_to (translation.request_id, translation) %>

这会产生错误:

syntax error, unexpected ',', expecting ')'

这让我很困惑,因为在我看来,我只是在 link_to 的参数周围加上括号。

我误会了什么?

【问题讨论】:

    标签: ruby-on-rails ruby syntax parentheses


    【解决方案1】:

    你有一个额外的空间:

    link_to (translation.request_id, translation)
    

    应改为:

    link_to(translation.request_id, translation)
    

    这是 ruby​​ 中的语法错误:

    [~]$ ruby -e 'def adds(x, y) x+y end; puts adds (1, 2)'
    -e:1: syntax error, unexpected ',', expecting ')'
    def c(x, y) x+y end; puts adds (1, 2)
                                      ^
    

    【讨论】:

    • 查看我对差异的解释
    【解决方案2】:

    在大多数情况下,方法参数的括号在 Ruby 中是可选的。

    link_to("link name", path) 
    

    等价于

    link_to "link name", path
    

    后一个例子在 Rails 社区中更为惯用。

    但是,必须保留间距。如果省略括号,则方法和参数之间只能有一个空格。对于刚接触 Ruby 和 Rails 的人来说,它可能看起来有点奇怪,但它被如此普遍地使用,你很快就会习惯它。

    例外情况是,如果您将方法链接在一起并且较早的方法之一有参数,那么您将需要包含括号。

    【讨论】:

    • 澄清:如果您说f (x),那么括号仅用于在参数列表中分组,它们不用作参数的分隔符。如果您说f(x),那么括号将用作参数的分隔符。考虑f(1 + 2) * 3f (1 + 2) * 3,第一个与f(3) * 3 相同,但第二个是f(9)。方法调用上的括号(通常)是可选的,因此解析器必须猜测括号的含义。
    • 两个都是很好的答案,很抱歉因为一些小原因不得不选择一个!不幸的是,这种空格感知行为让我想起了 powershell。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多