2011-07-13 26 views
0

我正在執行一個多窗體嚮導,遵循Ryan Bates提供的步驟。創建一個新的記錄是有效的,所以當我編輯記錄時我試圖使用相同的邏輯。但是,我更改的值不會更改 - 當我從第一個表單編輯某些內容時,前進後退,我的編輯不會保存。以下是我的控制器中的代碼:Rails 3 - 多窗體嚮導 - 嘗試編輯記錄不會保存值

def edit 
    session[:edit] = "Only change the fields you wish to edit" 
    @demographic = Demographic.find(params[:id]) 
    session[:demographic_params] ||= {} 
    end 

    def update 
    session[:demographic_params].deep_merge!(params[:demographic]) if params[:demographic] 
    @demographic = Demographic.find(params[:id]) 
    @demographic.current_step = session[:demographic_step] 
    if params[:back_button] 
     @demographic.previous_step 
    elsif @demographic.last_step? 
     @demographic.update_attributes(params[:demographic]) 
     updated = true 
    else 
     @demographic.next_step 
    end  
    session[:demographic_step] = @demographic.current_step 
    if not updated 
     render "edit" 
    else 
     session[:demographic_params] = session[:demographic_step] = nil 
     flash[:notice] = "Entry entered successfully" 
     redirect_to demographic_path 
    end 
    end 

我應該更改哪些內容以允許保存編輯?

+0

有沒有想過如何將它保存在每一步? – ZMorek

+0

@ZMorek對於遲到的回覆感到抱歉,但是我做了Gabriel所做的工作。 – TheDude

回答

1

我不知道這是否會工作,但我覺得應該是這樣在每個「階躍變化」保存:

def update 
    session[:demographic_params].deep_merge!(params[:demographic]) if params[:demographic] 
    @demographic = Demographic.find(params[:id]) 
    @demographic.current_step = session[:demographic_step] 
    @demographic.update_attributes(params[:demographic]) 
    if params[:back_button] 
     @demographic.previous_step 
    elsif @demographic.last_step? 
     updated = true 
    else 
     @demographic.next_step 
    end  
    session[:demographic_step] = @demographic.current_step 
    if not updated 
     render "edit" 
    else 
     session[:demographic_params] = session[:demographic_step] = nil 
     flash[:notice] = "Entry entered successfully" 
     redirect_to demographic_path 
    end 
    end 

也就是說,移動@demographic.update_attributes outsite的「步步爲營一步「的邏輯。

所以,我認爲你應該走這條路來解決你的問題。

希望這會有所幫助。

+0

對不起,遲到的接受,但謝謝! – TheDude