2017-01-16 53 views
1

簡單的例子:的Rails如何渲染髮現變量

index.html.erb:

<% @posts.each do |post| %> 
<%= post.title %> 
<% end %> 

我可以重構這個和移動內容到_post.html.erb部分:

index.html.erb:

<%= render @posts %> 

_post.html.erb:

<%= post.title %> 

導軌時,如何通過每一個崗位的屬性,而無需創建一個塊? 我的posts_controller索引操作僅定義了@posts = Post.all

我想也許是由部分(後)的名稱,但看起來像它的另一個Rails約定(複數和單數命名)。是嗎?

非常感謝您的分享!

回答

4

Rails通過查看集合中的模型名稱來確定要使用的部分的名稱。完整的語法渲染集合如下:

<%= render partial: "post", collection: @posts %> 

但是有這個簡寫:

<%= render @posts %> 

根據文檔:

當一個部分是帶一個多個集合,那麼部分的個別實例可以訪問通過以部分命名的變量呈現的集合的成員 。在 這種情況下,部分是_post,並且在_post部分內,你可以引用 來獲取正在呈現的實例。

您可能會發現rails guides

詳細解釋