Modification du comportement de link_to dans une installation de Redmine (Ruby on Rails)

StackOverflow https://stackoverflow.com/questions/513594

  •  21-08-2019
  •  | 
  •  

Question

Je suis en train de modifier l'interface utilisateur d'une installation de Redmine (Redmine 0.7.3.devel.2093 (MySQL)).

Lorsque vous affichez un projet dans Redmine, il génère une liste de tous les sous-projets du projet.

Par exemple, app / views / projets / index.rhtml appelle link_to fonction:

<% if @project_tree[project].any? %>
    <p><%= l(:label_subproject_plural) %>:
    <%= @project_tree[project].sort.collect {|subproject| 
       link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp"))}.join(', ') %></p>
<% end %>

Quels sont sorties le code HTML suivant:

<p>Subprojects:
<a href="/projects/show/foo" class="subp fav">Foo Subproject</a>, <a href="/projects/show/bar" class="subp">Bar Subproject</a>, <a href="/projects/show/baz" class="subp fav">Baz Subproject</a></p>

Nous trouvons qu'une liste délimitée par des virgules des sous-projets est très difficile à analyser visuellement. Nous aimerions avoir chaque sous-projet inscrit sur sa propre ligne. (Tout balisage est très bien -. UL, OL, ou balises P sur chaque lien serait idéal, mais un BR à la place d'une virgule serait tout à fait bien)

Quelle est la meilleure façon de faire ce changement? Je ne peux pas trouver où link_to est défini dans l'application; grep def link_to( et similaires se présente rien. Je suis un type d'interface utilisateur, donc je ne comprends pas vraiment comment Rails traite de ce genre de choses - il ne semble pas être défini dans les modèles de vue.

Était-ce utile?

La solution

Vous pouvez le faire directement dans le code que vous avez fourni. Il suffit de changer

join(', ')

à

join('<br />')

Cela devrait le faire.

Autres conseils

link_to est fourni par le framework Rails - il ne génère pas les liens comme une liste - il crée simplement un seul lien. La question est la sort.collect et le bloc générant les appels à link_to

Cela devrait fonctionner, mettre les sous-projets dans les éléments de liste

<% @project_tree[project].sort.collect do |subproject| %>
  <li>        
    <%= link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp")) %>
  </li>
<% end %> 

Je voulais souligner que la dernière version du tronc Redmine a changé le projet d'utiliser la liste des listes HTML (ul et li).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top