2010-07-02 6 views
2

Im utilisant 2 ensembles de vues différents pour les rôles de 2 utilisateurs différents. Im en utilisant register_alias:Comment utiliser partiel dans les vues avec différents alias MIME?

Mime::Type.register_alias "text/html", :basic 

dans le contrôleur:

class SomeController < ApplicationController 
    def index 
    # … 
    respond_to do |format| 
     format.html # index.html.erb (advance) 
     format.basiC# index.basic.erb 
    end 
    end 
end 

Dans certains cas, je dois utiliser le même code dans les deux vues, puis je voudrais utiliser un partiel, mais parce que de l'alias MIME, je dois utiliser 2 partiels identiques: my_partial.html.erb et my_partial.basic.erb

Je pense qu'il y a une solu pour sécher le code et n'utiliser qu'un partiel.

Avez-vous des solutions?

merci, Alessandro

+0

Pourquoi utilisez-vous différents types MIME pour différents rôles? Cela me semble un peu étrange, sauf peut-être un rôle pour les utilisateurs accédant au site en utilisant un appareil mobile. –

+0

En fait, ils sont MIME alias. J'ai cette solution ici (ma question): http://stackoverflow.com/questions/3157063/different-set-of-views-for-different-users-roles –

Répondre

4

Old Réponse:

J'ai probablement essayé 50 choses différentes jusqu'à ce que je la bonne façon d'écrire la fois partielle, mais il en valait la peine parce qu'il est super simple :

l'intérieur de votre vue index, vous faites normalement:

<%= render "my_partial" %> 

Ceci est implicitement mappé sur le partiel correspondant au Mime que vous avez demandé, donc cela implique deux implémentations partielles. Si vous voulez un endroit sec partiel, simplement spécifier explicitement le format:

<%= render "my_partial.html" %> 

En prime de cette observation, si votre bloc responds_to de code est vraiment juste pour passer en fonction du format et n'a pas de logique à l'intérieur vous pouvez entièrement supprimer ce bloc de code et les choses fonctionnent encore implicitement.

Rails 3.2 mise à jour:

Rails a désapprouvée soutien à ce qui précède et de soutien a été complètement supprimé dans la dernière version de Rails. Ce qui suit est la bonne façon de Rails 3.2:

<%= render :partial => "my_partial", :formats => [:html] %> 
Questions connexes