2009-07-06 103 views
103

如何包装视图代码链接?我无法弄清楚如何将多行代码和ruby代码传递给一个单一的方法link_to。我要寻找的结果是,单击列,并获得显示页面:如何将link_to包装在一些html ruby​​代码中?

<div class="subcolumns"> 
    <div class="c25l"> 
     <div class="subcl"> 
     <%= image_tag album.photo.media.url(:thumb), :class => "image" rescue nil %> 
     </div> 
    </div> 
    <div class="c75r"> 
     <div class="subcr"> 
      <p><%= album.created_at %></p> 
      <%= link_to h(album.title), album %> 
      <p><%= album.created_at %></p> 
      <p><%= album.photo_count %></p> 
     </div> 
    </div> 
</div> 

回答

242

link_totakes a block of code(> = Rails的2.2),它将用作标签的主体。

所以,你做

<%= link_to(@album) do %> 
    html-code-here 
<% end %> 

我相当肯定要嵌套div一个a标签内是无效的HTML。

编辑:添加=字符每Amin Ariana的评论如下。

+14

此评论仅供参考:

在HTML5中有效,但在早期的HTML规范中无效。有关类似问题,请参阅http://stackoverflow.com/questions/796087/make-a-div-into-a-link。 – chucknelson 2011-08-28 00:08:00

+0

使用上面的语法,Rails 2.3.8仍然会出现“syntax error,unexpected')''。 – 2013-06-11 15:43:45

6

可以使用link_to与块:

<% link_to(@album) do %> 
    <!-- insert html etc here --> 
<% end %> 
+1

仅在> = 2.2的Rails阿 – 2009-07-06 10:47:16

+0

,好,我不知道那!谢谢奥马尔。 – 2009-07-06 10:51:46

+2

link_to要求'='出现(即使有块) – Brandon 2014-02-21 00:55:28

7

对于旧的Rails版本,你可以使用

<% content_tag(:a, :href => foo_path) do %> 
    <span>Foo</span> 
<% end %> 
0

对这个答复我知道一个滞后的一点 - 但我今天在这里执导,并没有找到一个很好的答案。下面应该工作:

<% link_to raw(html here), @album %> 
11

此外,这可能是一些问题:

务必写<%=如果你是在做它,而不是用<%代码的简单链接。

例如

<%= link_to 'some_controller_name/some_get_request' do %> 
    Hello World 
<% end %>