2011-03-06 3 views
1

Comment créer différents modes d'affichage. Comme un visiteur peut choisir la liste ou la vue de boîte.Rails comment créer des vues différentes?

+0

Je demande de l'aide aussi dans http://codereview.stackexchange.com/questions/1192/how-to-manage-different-views – ecoologic

+0

[et le nettoyage solution finalement arrivé!] (http://codereview.stackexchange.com/questions/1192/how-to-manage-different-views/10319#10319) – ecoologic

Répondre

1

Cela dépend de combien ces vues sont similaires, ce que je ferais est de créer des partiels pour chaque vue, puis dans la vue principale j'appelle le droit en fonction de la propriété. Disons que vous avez une fonction application_helperwhich_view dans votre index vous pouvez écrire quelque chose comme ceci:

<!-- your index --> 
<%= render which_view == :box ? 'index_box' : 'Index_list' %> 

Je préfère le précédent, mais si vous avez quelques changements que vous pouvez aller pour quelque chose comme:

<% if session[:view_type] == 'box' %> 

    <!-- box content --> 

<% else %> 

    <!-- list content --> 

<% end %> 

** EDIT **

rendre l'action:

# application_controller.rb 
    def set_view_type # TODO: refactor 
    session[:view_type] = params[:view_type] 
    redirect_to :back 
    end 

définir vos itinéraires:

# routes.rb 
    match '/set_view_type' => 'application#set_view_type', :as => :set_view_type 

écrire votre formulaire:

<!-- _view_type_selection.html.erb --> 
    <%= form_tag set_view_type_path do %> 

    <%= radio_button_tag :view_type, :box, session[:view_type] == 'box' %> 

    <%= radio_button_tag :view_type, :list, session[:view_type] == 'list' %> 

    <%= submit_tag 'select' %> 

    <% end %> 

Pas les meilleures pratiques mais ça marche!

+0

Comment créer la méthode d'assistance? –

1

Je suis presque d'accord avec ecoologic. Au lieu de la deuxième solution j'utiliserais quelque chose comme l'instruction de cas dans le contrôleur qui décide quel modèle devrait être rendu.

Comment créer la méthode d'assistance?

Ajoutez dans le fichier <controller_name>_helper

+0

Ah oui! c'est mieux, tu évites de rendre le mélangeur qui rend les partiels! - Peut-être que vous avez une bonne idée sur la façon de stocker la valeur, je ne l'aime pas beaucoup – ecoologic

+0

Je ne connais pas l'idée de Rails débutant, mais au lieu de le stocker, je préfère le voir en URL. Donc, si j'envoie un lien pour une page intéressante, il semble que sur mon écran et je peux naviguer sur le destinataire sur cette page. Ou je peux envoyer ce lien directement avec l'ancre, qui pourrait être dans une mise en page, mais pas dans un autre. C'est aussi mieux pour bookmarking, etc ... Je ne connais pas d'exemple en anglais, mais recherchez ce http://tv.seznam.cz/radkovy-program et ce http://tv.seznam.cz/sloupcovy-program . Je peux envoyer un de ces liens et dire "Regardez la deuxième ligne/colonne" – Mailo

+0

Je comprends votre pov, Personnellement, je n'aime pas stocker les paramètres dans l'URL, mais en pensant à une option invité, il est parfaitement logique – ecoologic

Questions connexes