【问题标题】:link_to block inside a each do loop not working每个 do 循环内的 link_to 块不起作用
【发布时间】:2017-05-13 07:11:01
【问题描述】:

我正在尝试呈现一个表格,其列是 subreddit 标题并具有指向每个 subreddit 的链接。但是,这不会生成链接。我想让整行成为链接,而不是特定的单元格。有什么问题?

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

【问题讨论】:

  • 您将链接环绕 &lt;td&gt; 元素。将&lt;td&gt; 包裹在链接周围。
  • 我想让整个单元格成为一个链接。更新了描述以澄清这一点!
  • @alpaca HTML 不这样做。 stackoverflow.com/questions/10070232/…

标签: html ruby-on-rails erb link-to


【解决方案1】:

您将链接环绕&lt;td&gt; 元素。将&lt;td&gt; 包裹在链接周围。

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

如果你想让 整个 &lt;td&gt; 成为一个链接,你必须使用上面的代码 plus 像这样:

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


更新

您似乎更新了您的问题以添加额外的&lt;td&gt;s。看起来您现在想要将您的 &lt;tr&gt; 设为链接。实现这一点的最佳方法可能是只使用 JavaScript。有关解决方案,请参阅下面的链接。我还会添加 CSS,以便 &lt;tr&gt; 有一个指向光标,以改进用户体验。

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


我已经在这里添加了完整的解决方案,不需要像 jQuery 这样的依赖项,当然,它是用 ES6 编写的,所以如果需要,请将 const 更改为 var。请注意,它尚未经过测试。

# 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; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多