2012-01-06 56 views
0

我在Rails應用一個幫手,在控制器返回基於一個變量集的一些數據:等:渲染其他視圖而不損失變量值

def title 
    base_title = "Unikernel" 
    if @title.nil? then 
     base_title 
    else 
     "#{base_title} | #{@title}" 
    end 
end 

而在控制器(通常在每個動作)我設置值,例如:

@title = "Solutions" 
現在

,當我處理了一些成績,我從表單提交得到的,如果有什麼是錯的我說:

render action: "edit" 

render "new" 

當我所呈現的頁面中的變量未初始化等上。

我該怎麼處理這個問題?

回答

2

通常,當更新時出現錯誤時,您會發現自己處於更新操作中。當創建時出現問題時,您的錯誤消息將通過創建操作顯示出來。您是否也在創建和更新操作中設置了變量?

def new 
    @title = "New page" 
end 

def create 
    @title = "Errors!" 
end 

當您提交表單並獲取錯誤,你會得到@titlecreate行動,如果你沒有把它設置在創建,@title將是零。

當您撥打render時,您沒有重定向到其他操作,因此您仍然在update

+0

是的,這是個好主意,謝謝!另外我發現如果我需要通過所有資源使用相同的數據,我可以使用'before_filter'初始化方法。 – Uko 2012-01-06 13:08:05

+0

不客氣!好主意,之前的過濾器將幫助你保持你的代碼DRY :) – 2012-01-06 13:11:49