【问题标题】:How do I wrap link_to around some html ruby code?如何将 link_to 包裹在一些 html ruby​​ 代码周围?
【发布时间】:2010-11-08 08:27:24
【问题描述】:

如何围绕视图代码包装链接?我不知道如何将带有 ruby​​ 代码的多行传递给单个 link_to 方法。我正在寻找的结果是您单击该列并获取显示页面:

<div class="subcolumns">
  <div class="c25l">
        <div class="subcl">
        <%= image_tag album.photo.media.url(:thumb), :class => "image" rescue nil  %>
        </div>
    </div>
  <div class="c75r">
        <div class="subcr">
            <p><%= album.created_at %></p>
            <%= link_to h(album.title), album %>
            <p><%= album.created_at %></p>
            <p><%= album.photo_count %></p>
        </div>
  </div>
</div>

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    link_to takes a block of code (>= Rails 2.2) 它将用作标签的主体。

    所以,你可以

    <%= link_to(@album) do %>
      html-code-here
    <% end %>
    

    但是我很确定在a 标签内嵌套div 不是有效的HTML。

    编辑:在下面的 Amin Ariana 评论中添加了 = 字符。

    【讨论】:

    • 此注释仅作为参考:
      在 HTML5 中有效,但在早期的 HTML 规范中无效。有关类似问题,请参阅 stackoverflow.com/questions/796087/make-a-div-into-a-link
    • Rails 2.3.8 使用上述语法仍然出现“语法错误,意外')'”。
    • 如果路径比较复杂,可以直接添加参数,省略初始内容,例如
    【解决方案2】:

    另外,这对某些人来说可能是个问题:

    如果您正在做一个包含代码的简单链接而不是&lt;%,请务必写&lt;%=

    例如

    <%= link_to 'some_controller_name/some_get_request' do %>
      Hello World
    <% end  %>
    

    【讨论】:

    • 我认为这在 Rails 3+ 中是必需的
    【解决方案3】:

    我知道这个回复有点滞后 - 但我今天被引导到这里,但没有找到好的答案。以下应该有效:

    <% link_to raw(html here), @album %>
    

    【讨论】:

    • 这不应该被使用,因为在raw中输入的所有html都容易出现XSS。
    • 不一定,HTML 可能是从您自己的应用程序中您知道是安全的某处生成的。不过,最好在 99% 的情况下避免这种情况。 (别说上面的代码反正有错误,应该是&lt;%=开头,而不是&lt;%。)
    • 不是最好的方法。这里的 html 必须由您自己的应用程序生成并确保安全。上面的答案还有其他更好的方法。
    【解决方案4】:

    对于较旧的 Rails 版本,您可以使用

    <% content_tag(:a, :href => foo_path) do %>
      <span>Foo</span>
    <% end %>
    

    【讨论】:

      【解决方案5】:

      您可以将link_to 与块一起使用:

      <% link_to(@album) do %>
          <!-- insert html etc here -->
      <% end %>
      

      【讨论】:

      • link_to 需要“=”才能显示(即使有块)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2013-09-15
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多