Изменение поведения link_to в установке Redmine (ruby on rails)
-
21-08-2019 - |
Вопрос
Я пытаюсь изменить пользовательский интерфейс установки Redmine (Redmine 0.7.3.devel.2093 (MySQL)).
Когда вы просматриваете проект в Redmine, он генерирует список всех подпроектов для проекта.
Например, приложение/ просмотры/проекты/index.rhtml называет ссылка_то функция:
<% 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 %>
Который выводит следующий 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>
Мы обнаружили, что список подпроектов, разделенных запятыми, очень сложно визуально проанализировать.Мы бы хотели, чтобы каждый подпроект был указан в отдельной строке.(Подойдет любая разметка - теги UL, OL или P для каждой ссылки были бы идеальными, но BR вместо запятой было бы совершенно нормально.)
Каков наилучший способ внести это изменение?Я не могу найти, где link_to
определяется в приложении;греппинг для def link_to(
и ничего подобного не выясняется.Я отношусь к типу пользовательского интерфейса, поэтому я действительно не понимаю, как Rails справляется с этим материалом - похоже, это не определено в шаблонах просмотра.
Решение
Вы можете сделать это непосредственно в предоставленном вами коде.Просто измени
join(', ')
Для
join('<br />')
Этого должно хватить.
Другие советы
ссылка_то предоставляется фреймворком Rails - он не генерирует ссылки в виде списка - он просто создает одну ссылку.Проблема заключается в sort.collect и блоке, генерирующем вызовы link_to
Это должно сработать, поместив подпроекты в элементы списка
<% @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 %>
Я хотел бы отметить, что последняя версия Redmine trunk изменила список проектов, чтобы использовать HTML-списки (ul и li).