我认为这也适用于其他事情,但我已经注意到它在我迄今为止经历过的教程中最多。基本上,有什么区别:
<%= render :partial => "shared/warning" %>
和
<%= render partial: "shared/warning" %>
答案 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" %>
render
是render :partial
的简写。
但是render
不会接受部分通过:locals
哈希的其他局部变量,您需要使用render :partial
,如下所示:
<%= render partial: "shared/warning", locals: { my_var: 'Hi!' } %>
在简写语法中,您可以传递如下的局部变量:
<%= render "shared/warning", my_var: "Hi!" %>