2012-04-22 104 views
0

重定向如何在rails中工作?我覺得它非常直觀和令人沮喪。下/views/mymodels/custom.html.erbRails 3重定向

我已經添加視圖文件我已經清空控制器的方法:

def custom 

end 

我有以下的routes.rb中:

resources :mymodel do 
    member do 
     get 'custom' 
    end 
    end 

在我的控制器中我嘗試呈現模型創建時的自定義視圖:

respond_to do |format| 
    if @presentation.save 
    redirect_to action: "custom" 
    #format.html { redirect_to @mymodel, notice: 'Presentation was successfully created.'} 
    #format.json { render json: @mymodel, status: :created, location: @mymodel } 

這會導致重定向呈現空白頁面。但瀏覽/mymodels/[id]/custom工作正常。我究竟做錯了什麼?爲什麼render :action => "custom"也無法工作?

編輯:

這工作:format.html { render action: "upload" }但爲什麼呢?

回答

2

爲什麼評論format.html {...}條款?使用方法:

代替:

if @presentation.save 
    redirect_to action: "custom" 
    #format.html { redirect_to @mymodel, notice: 'Presentation was successfully created.'} 

這樣寫:

if @presentation.save 
    format.html { redirect_to action: "custom" } 
+0

爲什麼沒有普通redirect_to的工作? – Fdr 2012-04-22 11:00:56

+0

因爲你將它放在'respond_to'塊中。註釋該塊並將'redirect_to'移到其外面並檢查。所有人都應該像你期望的那樣工作。 – jdoe 2012-04-22 11:16:49

+1

但是你必須認識到,這種從'respond_to'移出的過程只能是爲了好玩,不能再有。在真實世界的應用程序中,您有義務使用響應程序 - 它是可讀的,它是一個RESTful,它是一種MVC兼容方法,用於在各種表示形式中顯示單個資源。通過這種方式,您可以輕鬆擴展您的產品,用於以json/xml/other格式進行表示,而無需添加新操作,更改路由和其他內容。 – jdoe 2012-04-22 12:46:46