2009-11-08 6 views
0

Je me surprends souvent à écrire du code comme celui-ci dans le HEAD HTML et d'autres endroits:Une meilleure façon d'afficher des informations sous conditions dans les vues?

<% if @canonical_url %> 
    <link rel="canonical" href="<%= @canonical_url %>"/> 
<% end %> 

Je puis définissez la variable dans le contrôleur s'il est approprié.

Existe-t-il un moyen d'écrire l'équivalent sur une ligne, ou peut-être une manière différente d'organiser le code?

Répondre

1

Ok, j'ai trouvé cette solution. Dans le modèle:

<%= show_if('<link rel="canonical" href="$1"/>', @canonical_url) %> 

Et puis la méthode d'assistance:

# 
# Return the template text if the variable has a value. 
# 
def show_if(template, variable) 
    if variable 
    template.gsub('$1', variable) 
    else 
    '' 
    end 
end 
1

je besoin d'un peu plus de contexte pour déterminer ce qu'il est que vous essayez de faire. Compte tenu des informations que vous fournissez, je recommande de jeter un oeil à la canonical-url plugin for Rails.

0
def if_value(value, &block) 
    if value 
    concat(capture(value, &block)) 
    end 
end 

<% if_value(@canonical_url) do |value| %> 
    <link rel="canonical" href="<%= value %>"/> 
<% end %> 
2

Désolé pour la double réponse, SO me permettra seulement de publier une URL. Sinon, votre problème peut être résolu en utilisant content_for in your views où vous voulez que ce contenu apparaisse dans votre mise en page.