Изменение поведения link_to в установке Redmine (ruby на рельсах) - PullRequest
1 голос
/ 05 февраля 2009

Я пытаюсь изменить интерфейс установки Redmine (Redmine 0.7.3.devel.2093 (MySQL)).

Когда вы просматриваете проект в Redmine, он генерирует список всех подпроектов для проекта.

Например, app / views / projects / index.rhtml вызывает функцию link_to :

<% 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 определено в приложении; grepping для def link_to( и подобных ничего не получается. Я - пользовательский интерфейс, поэтому я не совсем понимаю, как Rails справляется с этим - он, кажется, не определен в шаблонах представления.

Ответы [ 3 ]

1 голос
/ 05 февраля 2009

link_to предоставляется платформой 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 %> 
1 голос
/ 05 февраля 2009

Вы можете сделать это прямо в коде, который вы предоставили. Просто поменяй

join(', ')

до

join('<br />')

Это должно сделать это.

0 голосов
/ 05 февраля 2009

Я хотел бы отметить, что последняя версия магистрали Redmine изменила список проектов для использования списков HTML (ul и li).

...