2017-03-12 3 views
1

Je crée un bouton Page précédente. C'est mon bouton:Les rails changent l'attribut d'élément html dans link_to

<li> 
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"button big previous" %> 
</li> 

Si la page est 0, elle doit être désactivée. Mon nouveau bouton devrait ressembler à ceci:

<li> 
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"disabled button big previous" %> 
</li> 

Je veux dire, je devrais utiliser si-else dans link_to, et selon le if-else mon code devrait changer de classe de mon bouton.

Comment puis-je faire cela?

Répondre

1

Vous pouvez utiliser l'opérateur conditionnel ? : pour insérer quelque chose directement dans la chaîne de classe:

<li> 
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"#{@previous_page != '0' ? '' : 'disabled'} button big previous" %> 
</li> 

ou simplement utiliser <% if %> <% else %>:

<% if @previous_page != '0' %> 
    <li> 
    <%= link_to "Previous Page", titles_path(:page => @previous_page), class:"button big previous" %> 
    </li> 
<% else %> 
    <li> 
    <%= link_to "Previous Page", '', class:"disabled button big previous" %> 
    </li> 
<% end %> 
2

usage conditionnel comme Tony a suggéré, mais l'approche de Tony est un peu défectueux parce que 0 n'est pas faux dans Ruby. Essayez ceci

= link_to 'Previous Page', titles_path(page: @previous_page), class: "#{(@previous_page == '0') ? 'disabled' : ''} button big previous" 

Hope that helps!

+0

J'ai marqué la réponse de Tony comme la solution en raison de la synchronisation. Mais merci quand même. –

+0

La logique est imparfaite là, ne pas oublier de le changer. – RSB

+0

Oui, je l'ai. Je vous remercie. –