2013-02-13 44 views
1

我與我的第一Rails應用程序渲染在形式(驗證)在誤差不同的控制器的視圖,而carring驗證消息

以下問題首先,我使用腳手架以生成病人實體。 但是,我希望Patient添加表單在我的主頁中可見,該主頁由控制器PagesController及其操作Home控制。我只是在我的主頁上添加了Patient的部分視圖。

我提交表單後,如果添加成功,它就會按照它的原樣工作。但是,如果驗證失敗,它會讓我到患者/新(不是我的主頁),顯示錶單錯誤。出現這種情況的,因爲這個代碼在PatientsController

if @patient.save 
    format.html { redirect_to @patient, notice: 'Patient was successfully created.' } 
    format.json { render json: @patient, status: :created, location: @patient } 
    else 
    format.html { render action "new" } 
    format.json { render json: @patient.errors, status: :unprocessable_entity } 

取而代之的是我想,在錯誤的情況下,它應該讓我回到主頁(其中提交表單)顯示錯誤。我試着做以下幾點:

format.html { render :controller => "pages", :action => "home" } 

,但我得到這個錯誤

Missing template patients/home, application/home with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/Users/xhorxhi91/Sites/dentarails/app/views" 

我也試過這樣:

format.html { render 'pages/home' } 

這個只調用視圖,而不是方法Home所以任何物體在該方法中創建的內容不會被重新創建。此外,錯誤不會被執行。我知道我可以從我的方法重新創建對象,但我知道這是不好的做法。

另外我知道我不能使用redirect_to方法,因爲錯誤消息不會被攜帶。

有什麼建議嗎?我是Ruby的新手,所以我不確定我的架構是否正確。

回答

0

如果你的routes.rb顯示

match 'pages/home' => "pages#home", as: "pages_home"

,那麼你可以寫

format.html { render pages_home_path }

+0

因爲它是一個渲染方法,它不會調用的方法 '家' 的'頁面的控制器,但只是渲染視圖。但是,我有幾個變量,我在Pages#home中初始化並在該視圖中使用。這就是爲什麼這不適合我 – interboy 2013-02-16 01:55:03