2016-12-29 21 views
0

我試圖渲染一個表,其列是subreddit標題並有鏈接到每個subreddit。但是,這不會生成鏈接。我想讓整行成爲一個鏈接,而不是特定的單元格。有什麼問題?link_to在每個do循環內部沒有工作

<% @subreddits.each do |subreddit| %> 
     <tr> 
     <%= link_to subreddit do %> 
      <td><%= something else %></td> 
      <td><%= subreddit.title %></td> 
     <% end %> 
     </tr> 
    <% end %> 
+0

你包裹_around_了''​​元素的鏈接。在鏈接周圍包裹'​​'。 –

+0

我想讓整個單元格成爲一個鏈接。更新說明以澄清! – alpaca

+0

@alpaca HTML不會那樣做。 http://stackoverflow.com/questions/10070232/how-to-make-a-cell-of-table-hyperlink – coreyward

回答

4

您纏繞的<td>元素的鏈接。圍繞鏈接包裝<td>

<% @subreddits.each do |subreddit| %> 
    <tr> 
    <td> 
     <%= link_to(subreddit.title, subreddit) %> 
    </td> 
    </tr> 
<% end %> 

如果你是想使整個<td>一個鏈接,你將不得不使用上面的代碼是這樣的:

https://stackoverflow.com/a/6459846/2456549


更新

看起來你更新了你的問題,增加了額外的<td> s。它看起來像你現在想讓你的<tr>鏈接。完成此操作的最佳方式可能只是使用JavaScript。請參閱下面的鏈接以獲取解決方案。我也會添加CSS,所以<tr>有一個指針,用於改進UX。

how to make a whole row in a table clickable as a link?


我說幹就幹,這裏增加了完整的解決方案,而不需要像jQuery的依賴關係,理所當然的,它是用ES6,所以更改constvar如果您需要。請注意,它尚未經過測試。

# ERB 
<tr class="cursor-pointer" 
    data-behavior="clickable-row" 
    data-url="<%= subreddit_url(subreddit) %>"> 
    <td><%= something else %></td> 
    <td><%= subreddit.title %></td> 
</tr> 

# javascript 
const clickableRows = document.querySelectorAll('[data-behavior=clickable-row]'); 

clickableRows.addEventListener('click', event => { 
    window.location = event.currentTarget.dataset.url; 
}); 

# css 
.cursor-pointer { cursor: pointer; }