2012-05-02 55 views
0

在Rails應用程序中,我有一個視圖index.html.erb和一個控制器posts_controller.rb。 在控制器我已定義的變量:在其他視圖中查看

def index 
@posts = TableName.find... 

並在視圖我有:

<% @posts.each do |post| %> 

如果我通過本地主機/帖/索引來訪問它,它工作正常。但我真正想要的是在其他視圖中顯示這個視圖,所以我使用<%= render :template => 'posts/index' %>,但我得到了這個錯誤信息:「NoMethodError - 當你沒有想到它的時候,你有一個零對象!你可能期望一個Array的實例。評估nil.each時出錯「

我該怎麼做?謝謝

回答

2

當您嘗試調用未定義對象上的方法時,會觸發NoMethodError。換句話說,您在其他視圖中呈現帖子/索引,但在其他視圖中未定義@posts實例變量。渲染模板不會路由控制器。

+0

我已經知道了。我想知道的是我該怎麼做。謝謝 – notGeek

+0

您必須在每個控制器動作中定義'@ posts',以呈現具有您的'posts/index'模板的模板。 – Mischa

+0

沒有更好的選擇來顯示另一個視圖嗎?謝謝 – notGeek