我很难理解两者之间的区别
<%= render :partial => "book", :object => @book %>
和
<%= render :partial => "book", :collection => @books %>
和
<%= render :partial => "book", :locals => { :book => @book } %>
有人可以向我解释吗?
我很难理解两者之间的区别
<%= render :partial => "book", :object => @book %>
和
<%= render :partial => "book", :collection => @books %>
和
<%= render :partial => "book", :locals => { :book => @book } %>
有人可以向我解释吗?
这些是相同的:
<%= render :partial => "book", :object => @book %>
<%= render :partial => "book", :locals => { :book => @book } %>
<%= render "book", :book => @book %>
他们将渲染_book.html.erb
文件一次,@book 对象将在该部分中作为book
变量可用。
这是缩写相同事物的一种好方法:
<%= render @book %>
这个有点不同:
<%= render :partial => "book", :collection => @books %>
它将在_book.html.erb
每本书中呈现一次文件@books
,而每个文件又在该部分中作为book
变量可用。
这是缩写相同事物的一种好方法:
<%= render @books %>
<%= render :partial => "book", :object => @book %>
将_book.html.erb
局部变量设置book
为@book
.
<%= render :partial => "book", :collection => @books %>
对于 in 中的每个元素,@books
都会将_book.html.erb
局部变量设置为book
in 中的当前元素@books
。
<%= render :partial => "book", :locals => { :book => @book } %>
将_book.html.erb
局部变量设置book
为@book。这种形式允许您设置额外的局部变量或更改它们的名称,而 :object 版本则不能。
<%= render :partial => "book", :object => @book %>
在第一种情况下,使用 :object 将默认定义一个与 partial 同名的变量。如果我的部分模板名为 _user.html.erb,那么模板中将定义一个名为“user”的局部变量。
您可以使用 :as => "another_name" 指定不同的变量名。
<%= render :partial => "book", :locals => { :book => @book } %>
最大的优点:locals
是
该:locals
方法的缺点是它比较冗长,有时很简单
render :partial => 'account'
等同于
render :partial => 'account', :locals => {:account => @account }
So use the one which suits you the best (or where it suits the best).
<%= render :partial => "book", :collection => @books %>
For Collection See : http://blogs.visoftinc.com/2010/04/27/ruby-beauty-rendering-a-rails-partial-for-a-collection/
More info: http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials