修改Redmine安装中的link_to行为(ruby on rails)

时间:2009-02-04 22:07:40

标签: ruby-on-rails redmine

我正在尝试修改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 的位置;对 def link_to( 进行点击并且没有任何内容。我是一个UI类型,所以我真的不知道Rails如何处理这些东西 - 它似乎没有在视图模板中定义。

3 个答案:

答案 0 :(得分:1)

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

join(', ')

join('<br />')

应该这样做。

答案 1 :(得分: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 %> 

答案 2 :(得分:0)

我想指出最新版本的Redmine主干更改了项目列表以使用HTML列表(ul和li)。