为什么这在Ruby 1.9.3下工作而不在1.8.7下?

Ros*_*son 0 ruby ruby-on-rails

我正在Rails中构建一个自定义的表单生成器,我一直在关注这个伟大的Rails Cast视频(http://railscasts.com/episodes/311-form-b​​uilders?view=asciicast).

Ryan使用这样的一行:

<%= form_for @project, builder: BootstrapFormBuilder do |f| %>
Run Code Online (Sandbox Code Playgroud)

但是在1.8.7之下,这会出现一个含糊不清的错误消息.

Ruby 1.9.3中的变化使得现在可以使用了吗?

顺便说一句,下面在1.8.7工作,但为什么呢?

<%= form_for(@project, :builder => BootstrapFormBuilder) do |f| %>
Run Code Online (Sandbox Code Playgroud)

Jör*_*tag 5

Ruby 1.9.3中的变化使得现在可以使用了吗?

对于Hash文字有一种新的语法,其键是Symbols,它们是有效的标识符.代替

{ :foo => 'bar', :baz => 42 }
Run Code Online (Sandbox Code Playgroud)

你现在也可以写

{ foo: 'bar', baz: 42 }
Run Code Online (Sandbox Code Playgroud)

此语法在1.9.0中引入.

顺便说一句,以下内容在1.8.7中有效,但为什么呢?

因为这是相同的事情,只是使用不同的语法编写.