1

我正在尝试修改 Redmine 安装的 UI(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 fordef link_to(和类似的结果什么都没有。我是一个 UI 类型,所以我真的不明白 Rails 是如何处理这些东西的——它似乎没有在视图模板中定义。

4

3 回答 3

1

您可以直接在您提供的代码中执行此操作。只是改变

join(', ')

join('<br />')

那应该这样做。

于 2009-02-04T22:18:19.753 回答
1

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 %> 
于 2009-02-04T22:19:32.030 回答
0

我想指出,最新版本的 Redmine trunk 将项目列表更改为使用 HTML 列表(ul 和 li)。

于 2009-02-05T02:19:10.517 回答