link_to许多标签而不是单个字符串

时间:2016-09-19 21:18:18

标签: ruby-on-rails ruby

我正在构建用户通知列表。当前用户点击包含整个通知内容的<li>标记时,应将其重定向到上述帖子或用户等。

以下是我现在正在尝试的内容,似乎无法让它发挥作用。

<%= link_to activity.activable do %>
  <span><%= link_to(image_tag(activity.actor.avatar.url(:thumb)), user_path(activity.actor.username)) %></span>
  <span class="us-rt-sg">
    <%= link_to activity.actor.name, user_path(activity.actor.username), class: "us-rt-usnm" %>
    <%= activity.action %> on
    <%= link_to personalize_owner(activity, recepient), user_path(activity.activable.user.username) %>
    <%= link_to 'Post', activity.activable %>
    <br>
    <span class="us-rt-sg-date"><%= time_ago_in_words(activity.created_at) %></span>
  </span>
<% end %>

一旦我开始工作,我会删除该行<%= link_to 'Post', activity.activable %>,因为点击后整个<li>都会成为一个链接。

我也在我的活动主视图页面上尝试了这个。

<li class="activity">
  <%= link_to activity.activable do %>
    <%= render "activities/#{activity.action}", activity: activity, recepient: recepient %>
  <% end %>
</li>

有人能告诉我我需要做什么吗?因为到目前为止,我所做的每一件事都没有奏效。

2 个答案:

答案 0 :(得分:1)

包裹link_to和内部链接会让你头疼。你必须决定元素中最重要的东西。

从表面上看,如果您有可点击的通知并链接到指定的活动,则应删除内部链接,然后将整个内容链接到活动。一旦他们到达活动,那么您可以包含指向作者,所有者等的链接,而不必担心包装链接。

答案 1 :(得分:0)

看起来您正在尝试嵌套锚链接,这违反了W3C标准。您将无法在链接中使用link_to标记来阻止。但是,您可以通过分配ID并使用数据属性来存储目标来激活on Click事件处理程序

<li class="clickable" data-destination="<%=activity.activable%>"
  <%= link_to activity.actor.name, user_path(activity.actor.username), class: "us-rt-usnm" %>
   xxxxxx
</li>

#JQuery example
$('.clickable").on('click', function () {window.location.href = $(this).attr('data-destination') });