ruby-on-rails - Ruby/Rails 中的括号参数

标签 ruby-on-rails ruby methods syntax parameters

学习 Ruby/Rails,并在使用 ERB 模板时遇到这个问题:

作品:

<%= link_to image_tag(link.screenshot.url(:thumb)), link.screenshot.url(:original) %>

不起作用:

<%= link_to image_tag link.screenshot.url(:thumb), link.screenshot.url(:original) %>

在第一个中,image_tag 的参数在括号中。另一方面,他们不是。

我在 Ruby 中了解到,方法并不总是需要将它们的参数放在括号中,但在这种情况下,跳过它们的约定似乎是有问题的。

就这么处理? ERB模板的特殊性?还是我错过了更大的东西?

一如既往,谢谢。

最佳答案

此示例中缺少括号表示解析此类表达式时存在问题。通常,在 Ruby 中,当“如何传递参数”很清楚时,您可以省略它们。

让我们考虑以下情况 - 我定义了 addmulti 方法:

def add(*args)
  args.inject(:+)
end

def multi(*args)
  args.inject(:*)
end

所以下面很清楚:

add 1, 2, 3, 4
# => 10

multi 1, 2, 3, 4
# => 24

但以防万一:

add 1, multi 2, 3, 4

预期的输出是什么?您可以考虑几个场景:

add(1, multi(2, 3), 4)
# => 11

add(1, multi(2, 3, 4))
# => 25

add(1, multi(2), 3, 4)
# => 10

当使用括号时 - 您可以计算输出,因为您知道哪个参数用于哪个方法。如果不使用 - 你不能,所以 Ruby 也不能这样做。

让我们回到您提到的方法。 Ruby 不知道 if 方法:

<%= link_to image_tag link.screenshot.url(:thumb), link.screenshot.url(:original) %>

应该像这样对待:

<%= link_to image_tag(link.screenshot.url(:thumb)), link.screenshot.url(:original) %>

或:

<%= link_to image_tag(link.screenshot.url(:thumb), link.screenshot.url(:original)) %>

希望它能阐明问题!

祝你好运!

关于ruby-on-rails - Ruby/Rails 中的括号参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311923/

相关文章:

ruby-on-rails - 部分表单渲染但不显示

ruby-on-rails - 如何在 ruby​​ on Rails 中创建自定义路线

Java方法从另一个数字中删除所有9?

javascript - Rails 和 React - React.createClass/React.createReactClass 不是函数

java - 平均/最小/最大方法在带有窗口生成器的 java eclipse 中不起作用

ios - 如何在 Objective-C 中检查方法调用源?

ruby-on-rails - 使用 mongoid gem 时延迟加载 has_and_belongs_to_many 字段

javascript - JQuery-File-Upload 客户端图像使用 coffeescript 调整大小

ruby-on-rails - 搜索具有多个值的多个字段

ruby - 将方法应用于数组/可枚举中的每个元素