2010-12-15 88 views
0

Refactor ceci:Rails3 - refactor redirect appel

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

qui se trouve dans le contrôleur de l'école:

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 

Alors qu'il redirect à:

subdomain.domain.dom/ 

Routes:

ressources: écoles racine: à => "écoles # montrent"

choses ont essayé:

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

Fail, car il rediriger vers http://subdomain.domain.dom/schools

Et Comment puis-je passer un: avis?

J'ai ceci dans la vue:

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

Et ceci dans le contrôleur:

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

Répondre

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

Si vous utilisez régulièrement, vous voudrez peut-être envisager d'ajouter une méthode pour ApplicationController du type:

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

Agréable. Comment puis-je ajouter un: avis? – Nerian

+1

Si le contenu du sous-domaine est géré par la même application, vous devriez pouvoir le faire normalement: 'flash [: notice] =" Votre notification "'. S'il s'agit d'une application entièrement distincte, vous pouvez envisager de la passer en tant que chaîne de requête, sauf si vous souhaitez configurer des cookies inter-applications. Demandez si vous avez besoin de plus d'informations sur ce dernier. –

+0

L'application est la même. Mais le: avis n'est pas montré. Vous avez le code actuel sur l'édition. – Nerian