最近,当我从 github 尝试一个开源项目时,我遇到了这个奇怪的操作符
layout ->(c) { request.format == :mobile ? "application" : "centered_with_header_with_footer" }
我的问题是,layout ->(c) { }
实际解析是什么?
谢谢
最近,当我从 github 尝试一个开源项目时,我遇到了这个奇怪的操作符
layout ->(c) { request.format == :mobile ? "application" : "centered_with_header_with_footer" }
我的问题是,layout ->(c) { }
实际解析是什么?
谢谢
我知道 lambdas 很性感。:) 这就是您使用常规方法的方式。
layout :my_layout
private
def my_layout
request.format == :mobile ? "application" : "centered_with_header_with_footer"
end
还要确保request.format
实际返回符号,因为您正在将其与一个进行比较。
这是 ruby 1.9 中引入的一种新的 lambda 语法。这等效于以下内容:
layout lambda { |c| request.format == :mobile ? ... }
它是一种layout
将 lambda 文字->(){}
作为参数的方法。