2010-12-15 10 views
0

リファクタリングこの:Rails3 - リファクタリングリダイレクトコール

subdomain.domain.dom/ 

ルート:それはにリダイレクトするよう

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 

学校コントローラの内部にある

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

リソース:学校 ルート:

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

+1

サブドメインのコンテンツが同じアプリケーションで処理されている場合は、正常に実行できるはずです: 'flash [:notice] ="あなたの通知 "。完全に別のアプリケーションの場合は、アプリケーション間のCookieを設定しない限り、クエリ文字列として渡すことを検討することをおすすめします。あなたが後者についての詳しい情報が必要かどうか質問してください。 –

+0

アプリは同じです。しかし、通知は示されていません。編集時に現在のコードがあります。 – Nerian