J'ai un contrôleur qui a deux actions: "show", "show_modify". Ceux-ci ont des vues très similaires mais légèrement différentes, c'est-à-dire show_modify a différentes classes div
, a des liens/boutons supplémentaires et ainsi de suite.Rails: Quelle est la meilleure façon de séparer deux vues très similaires?
D'après ce que j'ai vu il y a quelques façons d'aborder ce dans des rails:
faire un modèle pour les deux et juste ajouter des conditions à l'intérieur:
<% if param[:action]=="show_modify"> <% ... %> <% end %>
pourtant il y a tant de différences que cela semble très laid et répétitif, et est-ce aussi une sorte de violation de la séparation de l'église et l'état (je ne suis pas un expert MVC ...)
Le chemin partiel: Pour chaque élément affiché différemment, créez deux partiels, un pour chaque action. Les vues ressemblerait à quelque chose comme ceci:
# show_modify render :partial '_general_stuff' render :partial => '_blabla_show_modify' # show render :partial => '_general_stuff' render :partial => '_blabla_show' `
Pourtant, ce contreviendra à SEC, parce qu'il ya des éléments qui se chevauchent. Je peux continuer à faire plus de sous-partiels, mais c'est essentiellement des tortues tout le long - finalement vous devez aller si/sinon si vous ne voulez pas vous répéter.
Partials avec les habitants:
if show render :partial = '_blabla', :locals => {:bckgrnd => 'blue', :button => 'yes' ....}
mais ceci est une autre solution beaucoup-o-ifs ....
Les meilleures options là-bas? content_for
peut-être? Je suis un peu un Rails noob +, donc j'ai peut-être manqué quelque chose complètement ....
Je n'étais pas au courant de la construction <% link_to .. if ..%>. C'est très lisible et produit beaucoup moins d'encombrement ... Merci! –