Modificare il comportamento di link_to in un'installazione Redmine (Ruby on Rails)
-
21-08-2019 - |
Domanda
sto cercando di modificare l'interfaccia utente di un impianto Redmine (Redmine 0.7.3.devel.2093 (MySQL)).
Quando si visualizza un progetto in Redmine, genera un elenco di tutti i sottoprogetti per il progetto.
Per esempio, app / views / progetti / index.rhtml chiama la link_to Funzione:
<% 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 %>
che emette il seguente codice HTML:
<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>
Troviamo che un elenco delimitato da virgole di sottoprogetti è molto difficile da analizzare visivamente. Ci piacerebbe avere ogni sottoprogetto quotata sulla propria riga. (Nessun marcatore va bene -. UL, tag OL, o P ad ogni collegamento sarebbe l'ideale, ma un BR, invece di una virgola sarebbe totalmente bene)
Qual è il modo migliore per fare questo cambiamento? Non riesco a trovare dove link_to
è definito nella app; grep per def link_to(
e simili salta fuori nulla. Sono un tipo di interfaccia utente, così io davvero non capisco come Rails si occupa di queste cose - non sembra essere definito nei modelli di vista.
Soluzione
È possibile farlo direttamente nel codice che hai fornito. Basta cambiare
join(', ')
a
join('<br />')
Che dovrebbe farlo.
Altri suggerimenti
link_to è fornito dal framework Rails - che non sta generando i collegamenti come un elenco - si crea semplicemente un singolo collegamento. Il problema è la sort.collect e il blocco genera le chiamate a link_to
Questo dovrebbe funzionare, mettendo i sottoprogetti in elementi di elenco
<% @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 %>
ho voluto sottolineare che l'ultima versione del tronco Redmine ha cambiato il progetto di messa in vendita di utilizzare gli elenchi HTML (ul e li).