0

最近,当我从 github 尝试一个开源项目时,我遇到了这个奇怪的操作符

  layout ->(c) { request.format == :mobile ? "application" : "centered_with_header_with_footer" }

我的问题是,layout ->(c) { }实际解析是什么?

谢谢

4

3 回答 3

2

我知道 lambdas 很性感。:) 这就是您使用常规方法的方式。

layout :my_layout

private 

def my_layout
  request.format == :mobile ? "application" : "centered_with_header_with_footer"
end

还要确保request.format实际返回符号,因为您正在将其与一个进行比较。

于 2013-09-27T08:58:40.620 回答
2

这是 ruby​​ 1.9 中引入的一种新的 lambda 语法。这等效于以下内容:

layout lambda { |c| request.format == :mobile ? ... }

于 2013-09-27T08:35:22.580 回答
0

它是一种layout将 lambda 文字->(){}作为参数的方法。

于 2013-09-27T08:35:11.547 回答