2012-02-09 91 views
2

因此,我正在嘗試在註冊時爲我的用戶構建一個嚮導。 我無法使用javascript(我發現的是這種表單的一般解決方案)。 原因是我的嚮導中的每個頁面都很重Javascript依賴,這意味着一次加載所有內容都需要很長時間。 哦,該向導處理3種不同的資源。在Ruby on Rails中構建嚮導

我嘗試了一種方法,目前我堅持,坦率地說,感覺不對。

(旁註:用戶將面臨與「體面曝光」寶石)

這是我的嚮導控制器:

def index 
    case current_step 
     when 'description' 
     render 'users/edit' 
     when 'contact' 
     render 'contact_informations/edit' 
     when 'location' 
     render 'location/edit' 
    end 
    end 

    def current_step 
    @current_step || STEPS.first 
    end 

    def next_step 
    @current_step = STEPS[STEPS.index(current_step)+1] 
    index 
    end 

    def previous_step 
    @current_step = STEPS[STEPS.index(current_step)-1] 
    index 
    end 

    def final_step 
    @current_step == STEPS.last 
    end 

然後我會爲每個資源的一次更新動作(這是相同的嚮導控制器)

def update_description 

    if user.update_attributes(params[:user]) 
     next_step 
    else 
     redirect_to user_wizard_path(user) 
    end 
    end 

    def update_contact_information 
    # Do stuff here 
    end 

    def update_location 
    # Do stuff here 
    end 

看起來好像在同一個控制器中調用動作時有問題。 基於此,我從來沒有見過這樣做,它感覺不對。

我試圖在簡單中完成: 我不想混淆資源的原始REST控制器。 我希望每一步都得到驗證 如果update_attributes失敗,請重新渲染帶有錯誤的表單。 如果update_attributes成功,則呈現下一步。

我得出的結論是,我在這方面的投機行不通,並不覺得自己是做事的「軌道」。 我看過Ryan Bates的「多步形式」railscast,但即使在那之後,我似乎無法弄清楚這一點。

在此先感謝。 添

回答