2013-12-19 58 views
0

我有一個哈希在我的應用程序控制器的Rails 3 - 從控制器顯示散列查看

def search 
    render layout: "application", template: "search" 
     @result = { keyOne: "testing the hash", keyTwo: "this is value two" } 
end 

應用程序/視圖/ search.html.erb

<!-- display hash reults --> 
<p> 
    <%= @result[:keyOne] %> 
</p> 

,我發現了錯誤:未定義的方法`[]'爲nil:NilClass。我試過@ result.keyOne和其他幾個變體,但仍然沒有任何變化。

請幫助!

+2

問題不在於你的哈希訪問,它看起來像@結果是零。 –

+2

你必須確保你在與你的控制器動作相對應的視圖中調用@ @ result'。這裏似乎並非如此。 (如果此搜索方法位於SearchesController中,則視圖應位於此處:'app/views/searches/search.html.erb') – MrYoshiji

+0

您可以通過'before_action:search'爲該控制器的所有操作調用該函數,或者,如果將該函數和該行放入應用程序控制器中,則爲應用程序中的所有控制器操作。 – Narfanator

回答

3
  1. 初始化要在模板中使用的變量渲染模板之前
  2. 確保你使用正確的變量名。(要初始化@testing,但在你的模板使用@result
def search 
    @result = { keyOne: "testing the hash", keyTwo: "this is value two" } 
    render layout: "application", template: "search" 
end 
+0

哦,我的天啊,謝謝。這讓我瘋狂。問題是我需要在渲染之前初始化變量。 –