2010-12-15 45 views
0

重構這樣的:Rails3中 - 重構轉接呼叫

redirect_to "http://#{@school.id}" + '.' + request.domain + request.port_string + '/' 

這是學校控制器內部:

def create 
    @school = School.new(params[:school]) 

    if @school.save 
     redirect_to "http://#{@school.id}" + '.' + request.domain + request.port_string + '/' 
    else 
     render "new", :layout => nil 
    end 
end 

因此,它重定向到:

subdomain.domain.dom/ 

路線:

相關資源:學校 根:到=> 「學校#顯示」

事情嘗試:

redirect_to(:host=>@school.id + '.' + request.domain + request.port_string) 

失敗,因爲它重定向到http://subdomain.domain.dom/schools

,我如何傳遞一個:注意到了嗎?

我有這樣的觀點:

<% if flash[:notice] -%> 
    <div id="info_panel"> 
    <%= flash[:notice] -%> 
    </div> 
<% end -%> 

而這個控制器:

flash[:notice] = "School created" 
redirect_to(school_base(@school.id))     

回答

1
redirect_to "http://#{@school.id}.#{request.domain}#{request.port_string}/" 

如果你經常使用這個,你可能要考慮增加一個方法ApplicationController沿線:

def url_for_school(school) 
    "http://#{school.id}.#{request.domain}#{request.port_string}/" 
end 
helper_method :url_for_school 
+0

尼斯。我如何添加:通知? – Nerian 2010-12-15 21:28:49

+1

如果子域上的內容由同一個應用處理,您應該可以正常執行:'flash [:notice] =「您的通知」。如果它是一個完全獨立的應用程序,您可能需要考慮將它作爲查詢字符串傳遞,除非您想設置跨應用程序cookie。詢問你是否需要關於後者的更多信息。 – 2010-12-15 21:32:07

+0

該應用程序是相同的。但是:通知沒有顯示。您在編輯中有當前的代碼。 – Nerian 2010-12-15 22:37:50