2017-04-06 61 views
0

我試圖創建一個對象,並把布爾爲true,並在任何情況下 日誌顯示錯誤後重定向。如果布爾值爲真,Rails如何控制器重定向?

有人知道如何?

class BrandsController < ApplicationController 

    def new 
    @brand = current_user.build_brand(params[:brand]) 
    end 

    def create 
    @brand = current_user.build_brand(params[:brand]) 


    if @brand.save 

     redirect_to "#{new_user_path}?branded=#{@current_user.branded[1]}" 

flash[:success] = "thank's".html_safe 
    end 

    end 
end 
+0

你的錯誤是什麼? –

+0

'@ brand.save'將是一個布爾值,除非你已經做了一些產生異常的東西。 – tadman

回答

0

我不確定具體哪裏有什麼問題,但有一些事情並沒有真正在適當的Rails風格中完成。這裏有一個重新設計的版本,更傳統的:

class BrandsController < ApplicationController 
    before_action :build_brand, only: [ :new, :create ] 

    def new 
    end 

    def create 
    @brand.save! 

    flash[:success] = "Thanks!" 

    redirect_to new_user_path(branded: @current_user.branded[1]) 

    rescue ActiveRecord::RecordInvalid 
    render(action: :new) 
    end 

protected 
    def build_brand 
    @brand = current_user.build_brand(params[:brand]) 
    end 
end 

使用save!生成異常,如果有一個問題,這樣就可以避開if乾脆。然後,您可以通過重新渲染表單來處理無法保存的情況。您也可以將重複的代碼移動到before_action處理程序中,您可以在其中執行一次。

您的移動電話html_safe到模板當您參考flash[:success]。在這裏逃避現在還爲時過早。在某些情況下,您可能會發送JSON,而您不希望它以HTML格式。

相關問題