Modificare il comportamento di link_to in un'installazione Redmine (Ruby on Rails)

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

  •  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.

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top