2009-07-06 101 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 %>