呼叫局部的方式有何不同?

时间:2015-06-19 03:44:06

标签: ruby-on-rails

我认为这也适用于其他事情,但我已经注意到它在我迄今为止经历过的教程中最多。基本上,有什么区别:

<%= render :partial => "shared/warning" %>

<%= render partial: "shared/warning" %>

3 个答案:

答案 0 :(得分:6)

ruby​​中Hash文字的语法是:

{ key => value }

key可以是任何对象,包括Symbol,例如

{ :foo => "bar" }

使用散列中的键的符号变得如此受欢迎,并且在ruby中非常惯用,在ruby 1.9中为使用符号键创建的散列添加了可选语法,并且从下面的内容恰好等同于上面的:

{ foo: "bar" }

更新

除了您的特定用例之外,ruby还允许您在将{}作为参数传递给方法时删除Hash(以及能够删除() s),所以以下是等价的:

foobar( { foo: "bar" } )
foobar( foo: "bar" )
foobar foo: "bar"
foobar :foo => "bar"

答案 1 :(得分:1)

据我所知,两者都是一样的。你提到的最后一个是推荐的。

答案 2 :(得分:0)

两者都做同样的事情,建议使用第二个。

您也可以使用render代替render :partial

<%= render "shared/warning" %>

renderrender :partial的简写。 但是render不会接受部分通过:locals哈希的其他局部变量,您需要使用render :partial,如下所示:

<%= render partial: "shared/warning", locals: { my_var: 'Hi!' } %>

在简写语法中,您可以传递如下的局部变量:

<%= render "shared/warning", my_var: "Hi!" %>