我有麻烦了解什么是使用对象,收集和当地人在部分
<%= 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 %>
它将@books
每本书一旦呈现_book.html.erb
文件,每在book
变量中变为可用。
这里是一个甜方式缩写同一件事:
<%= render @books %>
<%= render :partial => "book", :object => @book %>
将呈现局部_book.html.erb
book
设置局部变量@book
。
<%= render :partial => "book", :collection => @books %>
对于@books
每个元素将呈现局部_book.html.erb
@books
在局部变量book
设置为当前元素。
<%= render :partial => "book", :locals => { :book => @book } %>
将呈现局部_book.html.erb
设置局部变量book
到@book。这种形式可以让你设置额外的局部变量或者改变它们的名字,而对象版本不会。
<%= render :partial => "book", :object => @book %>
在使用第一种情况:对象将定义具有相同名称作为部分缺省的变量。如果我的部分模板名为_user.html.erb,那么模板中会定义一个名为“user”的本地变量。
您可以指定一个不同的变量名称:as =>“another_name”。
<%= render :partial => "book", :locals => { :book => @book } %>
的:locals
的最大优点是,
的的缺点:locals
的方法是,它更详细,有时是一个简单的
render :partial => 'account'
是相同的
render :partial => 'account', :locals => {:account => @account }
所以使用哪个适合你的最好的一个(或者它适合最好的)。
<%= render :partial => "book", :collection => @books %>
对于收藏查看:http://blogs.visoftinc.com/2010/04/27/ruby-beauty-rendering-a-rails-partial-for-a-collection/
更多信息:http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials
值得一提的是,你已经错过了做这个最简单的方法:'<%=渲染@book%>'。 – meagar