2011-04-03 39 views
0

嘿傢伙, 我一般都沒有使用過腳手架,雖然我一直在搞Rails很長一段時間。我大部分時間都是手動做事。這種腳手架有什麼不對?

現在,我試圖創建一個像表單實現寧靜。我有一個的form_for,如:

的路線是:現在

scope :path => '/alliances', :controller => :alliances do 
    get 'show/(:id)' => :show, :as => 'alliance' 
    get 'new' => :new, :as => 'new_alliance' 
    post 'create' => :create, :as => 'create_alliance' 
    end 

,由新的動作產生這種形式:

def new 
    @alliance = Alliance.new 
end 

而提交的是這樣的:

def create 
    @alliance = Alliance.new(params[:alliance]) 

    if @alliance.save 
     flash[:error] = I18n.translate 'error.alliance_created' 
     redirect_to alliance_path and return 
    else 
     redirect_to new_alliance_path and return 
    end 
end 

現在,如果有錯誤,當重定向到new_alliance_path時,我不會收回它。初看起來,這看起來很正常,因爲new重新創建了@alliance實例變量。但是,在一些腳手架代碼中,它似乎是以類似的方式完成的。

你能看到我做錯了嗎?

回答

1

你創建行動應該看起來更像是這樣的:

def create 
    @alliance = Alliance.new(params[:alliance]) 

    if @alliance.save 
     flash[:error] = I18n.translate 'error.alliance_created' 
     redirect_to alliance_path 
    else 
     render :action => :new 
    end 
end 

致電時重定向再次啓動完整的請求生命週期。相反,您只需要使用當前的@alliance對象重新呈現新視圖。

我也注意到你正在使用4個空格來縮進。紅寶石標準是2.

+0

偉大的修復它thanx!順便說一句,我實際上使用兩個空格,這是粘貼在這裏,使它看起來像4在一些代碼(不知道爲什麼:/) – Spyros 2011-04-03 19:34:20

+0

很高興它幫助。我希望這只是一個堆棧溢出縮進問題。 – 2011-04-03 19:39:24