【问题标题】:Why can't I nest a partial in a link_to block in Rails?为什么我不能在 Rails 的 link_to 块中嵌套一个部分?
【发布时间】:2012-09-20 13:51:27
【问题描述】:

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

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

然后你会得到一个包含你的 html 内容的标签

但是,当我这样做时

<%= 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>

编辑:所以事实证明问题是因为我的部分中包含的链接标签,无论它们是手动创建还是通过link_to 函数创建的,都不可能有任何这些进入部分。有人可以解释一下这里发生了什么吗?

【问题讨论】:

  • 在实验中对我来说非常相似的东西 - 你使用的是什么版本的导轨?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2


【解决方案1】:

尝试将&lt;%= render.. 标记替换为&lt;% render..(不是=),以便render 块返回部分文本,但本身不输出它。

【讨论】:

  • 刚试过,但它仍然呈现在链接标签之外:/当我看到你的答案时,我真的认为这会起作用,这真的很奇怪
  • 即使我将部分内容直接粘贴到我的&lt;%= link_to(result) do %&gt; 块中,它也会呈现在外部
  • 听起来很奇怪。但是从您的第二条评论听起来,这个问题与使用部分无关吗? &lt;%= link_to(result) do %&gt;very simple link&lt;% end %&gt; 工作正常吗?
  • 现在只是猜测,但它会不会是另一个块 result.nbetoile.times do 的嵌套? .. 刚刚发现您的部分中也有一个link_to,所以这不会导致链接中的链接吗?
  • * 运算符可用于在 Ruby 中重复一个字符串,因此您应该能够仅使用 &lt;%= image_tag("/assets/star.png", class: "star") * result.nbetoile %&gt; 获得正确数量的星星,而无需使用块。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多