2013-09-27 73 views
0

最近,當我從GitHub嘗試一個開源項目,我碰到有這種怪異的運營商Ruby on Rails的怪異操作

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

我的問題是來的時候,也layout ->(c) { }實際上解析?

由於

回答

0

它是一種方法layout服用字面->(){}作爲參數的λ。

2

這是在Ruby 1.9中引入的新lambda語法。這相當於如下:

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

2

我知道lambda表達式是性感。 :)這是你如何用常規方法來扮演角色。

layout :my_layout 

private 

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

此外請確保request.format實際上返回的符號,因爲你正在比較它。