在大多數我看到的例子驗證形式,我注意到,在控制器,新方法只需有:與變量
@object = Object.new
在創建方法,你會看到類似這樣的:
@object = Object.find(params[:object])
if @object.save
flash[:success] = "This object has been added."
redirect_to objects_path
else
render :action => 'new'
end
這工作得很好,但我碰上(很常見)的唯一的事情,就是當檢驗失敗使用一些內置的輔助方法:
validates_presence_of:值
的「渲染:行動=>‘新’將被調用。因此,然後軌繞過控制器,並直接到新的行動,試圖呈現的形式。
控制器的旁路殺死我,因爲有時我用我在我的控制器定義的值裝載值到表單中。
因爲rails會繞過控制器,並且在加載「render:action =>'new'」時從未設置過值,所以我最終會得到nil值的錯誤。
我的問題:在驗證一個表單中已經定義了控制器中定義的變量的表單時,什麼是重定向表單的最佳方式(或通常的最佳實踐)?我想避免那些無價值的錯誤,所以我想我剛開始時做錯了。
啊哈!答案正在我的臉上。我之前使用過濾器來構建其他東西,而且我從來沒有將它用於表單。謝謝! :) – Steve 2010-02-17 19:48:23