2010-07-28 153 views
0

這裏是我的index.html.erbRails的動作不渲染

<%= render :action => 'new' %> 

<% unless @posts.empty? %> 
    <%= render @posts %> 
<% end %> 

的職位顯示,但沒有在new頁面。

這不是在日誌中可以:

Processing PostsController#index (for 127.0.0.1 at 2010-07-27 20:54:28) [GET] 
Post Load (0.2ms) SELECT * FROM "posts" 
Rendering template within layouts/application 
Rendering posts/index 
Rendered posts/_post (8.4ms) 

另外,如果我只用<%= render :new %>取代它,我得到的錯誤:

undefined method `include?' for :new:Symbol 

但應該讓我暗中渲染動作與Rails 2.3.8。

如果有人能解釋這些事情,我將不勝感激。

回答

1

您應該只在視圖內渲染部分。既然你需要在多個視圖中的內容,可以new.html.erb的內容轉換到部分(比如,_new.html.erb),然後

<%= render 'new' %> 

從new.html.erb以及index.html.erb。 render:action =>'actionname'用於渲染控制器內的另一個動作模板。

請注意,它爲每個模型創建一個_form.html.erb部分的常見習慣用法,並且每當您需要能夠從別處添加或編輯模型實例時使用它。這在這種情況下也是有用的。然後,您將從index,new和edit呈現表單部分。

0

只是一個想法,但我懷疑erb會將這兩個塊視爲一條線。正如你可能知道的那樣,在Ruby中,在行尾加上「除非」或「如果」條件是非常習慣的。

您可能希望在「除非」之前但在<%之後添加換行符。