Ändern des Verhaltens von link_to in einer Redmine Installation (Ruby on Rails)
-
21-08-2019 - |
Frage
Ich versuche, die Benutzeroberfläche einer Redmine Installation (Redmine 0.7.3.devel.2093 (MySQL)) zu ändern.
Wenn Sie ein Projekt in Redmine zu sehen, erzeugt er eine Liste aller Teilprojekte für das Projekt.
Zum Beispiel app / views / projects / index.rhtml ruft die link_to Funktion:
<% 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 %>
Welche gibt das folgende 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>
Wir finden, dass eine durch Kommata getrennte Liste von Teilprojekten sehr schwierig ist, visuell zu analysieren. Wir möchten, dass jedes Teilprojekt in einer eigenen Zeile aufgelistet haben. (Alle Markup ist in Ordnung -. UL, OL oder P-Tags auf jeder Verbindung wäre ideal, aber ein BR statt Komma wäre völlig in Ordnung)
Was ist der beste Weg, um diese Änderung zu machen? Ich kann nicht finden, wo link_to
ist in der App definiert; greppen für def link_to(
und ähnliche verwandelt sich nichts auf. Ich bin ein UI-Typ, so verstehe ich nicht wirklich, wie beschäftigt sich mit diesem Zeug Rails - es ist nicht in den View-Templates definiert zu sein scheint.
Lösung
Sie können es direkt in dem Code, den Sie zur Verfügung gestellt. Ändern Sie einfach
join(', ')
join('<br />')
Das sollte es tun.
Andere Tipps
link_to wird durch den Rails-Framework zur Verfügung gestellt - es ist die Links als Liste nicht zu erzeugen - es wird lediglich eine einzige Verbindung. Das Problem ist die sort.collect und der Block, die Anrufe zu link_to Erzeugung
Das sollte funktionieren, die Teilprojekte in Listenelemente setzen
<% @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 %>
ich, dass die neueste Version von Redmine Stamm darauf hin, wollte das Projekt geändert Listing HTML-Listen zu verwenden (ul und li).