2016-08-01 54 views
1

我正在使用我的模態中的驗證檢查錯誤。這工作正常,並顯示錯誤消息(我用調試器來確認這一點)。現在來了我的棘手部分。在重定向到新視圖時保留來自驗證的錯誤消息?

當驗證失敗我做這在我的代碼,所以現在:

def create 
    checked_segment_topics = params[:checked_segment_topics].split(",") 
    @menu = Menu.create_menu(checked_segment_topics, menuparams) 
    if @menu == true 
     redirect_to menus_path 
    else 
     redirect_to newmenu_path 
    end 
    end 

因爲我做一個重定向到一個新的觀點,錯誤消息未顯示。我嘗試渲染和問題是它追加到窗體的ID UUID。正因爲如此,我的JavaScript代碼失敗。在表單提交之前,我必須找到表單ID進行一些計算。

我的routes.rb文件的相關部分是在這裏:

get '/menus'    => 'menus#index' 
get '/newmenu'    => 'menus#new' 
resources :menus,  only: [:new, :create, :edit, :update, :destroy] 

有人能指導我在正確的方向?

+0

你見過這個http://stackoverflow.com/questions/1168017/how-do-i-store-an-instance-variable-across-multiple-actions-in-a-controller? –

+0

我不想將它放在會話變量中或使用@@變量。 – defiant

+0

然後我想到的另一種方法是在第一個控制器中執行'save(validate:false)',然後將其加載到第二個控制器中並使用'valid?'運行驗證。 –

回答

1

實例變量不會在請求中持續存在。因此,如果您不想爲此使用會話,那麼我可以想到的其他方式是將它們存儲在數據庫中,而無需運行驗證。

def create 
    # some logic to build @menu 

    @menu.save(validate: false) 

    # some logic for redirection 
end 

然後,在需要的操作中獲取它們並在其上運行驗證。

def new 
    # some logic to fecth @menu 

    @menu.valid? 

    # some logic to render @menu 
end 
+0

我用閃光燈顯示出色的錯誤信息。無論如何,謝謝你幫助我。 – defiant

+1

太好了。順便說一句,閃存使用會話來存儲它的數據。 –

+0

啊,謝謝你讓我知道! :) – defiant

相關問題