为什么在Rails中无法将partial嵌套在link_to块中?

4

我看过很多关于这个的帖子,文档甚至说如果你这样做

<%= link_to(result) do %>
    html-content-here
<% end %>

然后您会得到一个包含HTML内容的a标签。
然而,当我这样做时。
<%= link_to(result) do %>
    <%= render :partial => 'campings/inSelection', :locals => { :result => result } %>
<% end %>

我的链接和部分代码已经存在,但我却得到了类似这样的结果

<a href="link"></a>
partial's-content-here

这显然不是我想要的,这是不可能的吗? 这是我的部分内容:
  <div class="campingInHighlights">
      <% imgUrl = result.photo1.blank? ? "/assets/camping_defaut.png" : "http://applicampings.francecom.com/photos/fiches/liste/#{result.photo1}"  %>
      <%= image_tag imgUrl, class:"photo" %>
      <h3><%= link_to result.nom.to_s.downcase.capitalize, result %></h3>
      <p><%= result.ville.to_s.downcase.capitalize %> (<%= result.departement.code %>)</p>
      <div class="stars">
         <% result.nbetoile.times do %>
             <%= image_tag "/assets/star.png", class: "star" %>
         <% end %>
      </div>
  </div>

编辑:事实证明问题出在我的 partial 中包含的链接标签,无论是手动创建还是通过 link_to 函数创建,都不能在 partial 中使用。请有人能解释一下这是怎么回事吗?


在我的一个实验中,有非常类似的情况 - 你使用的是哪个版本的Rails? - Frederick Cheung
1个回答

3
尝试将<%= render..标记替换为<% render..(没有=),以便render块返回部分的文本但不输出它。

即使我直接将部分内容粘贴到我的<%= link_to(result) do %>块中,它也会在外部呈现。 - Geoffrey H
1
听起来有点奇怪,但是从你的第二条评论中看来,问题似乎与使用“partial”没有关系?<%= link_to(result) do %>very simple link<% end %>能够正常工作吗? - mikej
1
现在只是猜测,但是可能是另一个块“result.nbetoile.times do”的嵌套吗?我刚刚注意到你的局部中也有一个“link_to”,那么这不会导致链接中还有一个链接吗? - mikej
2
* 运算符可以用于在 Ruby 中重复一个字符串,因此您只需使用 <%= image_tag("/assets/star.png", class: "star") * result.nbetoile %> 即可获得正确数量的星星,无需使用块。 - mikej
谢谢,这非常有用。 虽然,现在当我再次调用partial时,即使没有块,事情仍然开始出现问题。 当partial只包含<span><%= result %></span>时,链接是正确的,但是似乎一旦有一个新的link_to调用,事情就开始变得混乱…… 我会得到不应该出现的空链接,并且partial会再次输出链接标记。 - Geoffrey H
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接