【问题标题】:rails link_to_function in a do在 do 中使用 rails link_to_function
【发布时间】:2013-11-19 16:53:58
【问题描述】:

我的 rails 应用程序中有一个 link_to_function 正常工作,但我尝试使用“do”将它包裹在一些 ruby​​ 代码中,但它没有执行它包裹的代码:

<li class="comment-list-item" id="<%=comment.id%>">
<%= link_to_function "test", "goToStepComment('#{step.id}', '#{comment.id}')" do %> 
    <div class="comment-list-image">
        <% if User.find(comment.user_id).avatar_url != nil %>
              <%= image_tag(User.find(comment.user_id).avatar_url(:thumb), :class=>"commentAvatar img-polaroid") %>
        <% else %>
              <%= image_tag("default_avatar.png", :class=>"commentAvatar img-polaroid") %>
        <% end %>
    </div>
    <div class="comment-list-title">
          <p><%= truncate(User.find(comment.user_id).username, length: 13) %> commented on <%= truncate(step.name, length: 20) %>: "<%=truncate(comment.body)%>"</p>
    </div>
<% end %>
</li>

这被渲染为:

<li class="comment-list-item" id="40" style="display: list-item;">
    <a href="#" onclick="goToStepComment('114', '40'); return false;">test</a>     
</li>

如何将 link_to_function 包裹在 ruby​​ 代码周围?

【问题讨论】:

  • link_to_function 的历史很模糊,有很多关于被弃用或不被弃用的决定。因此,它实际上取决于您运行的版本是否存在以及它是否接受块。你运行的是哪个版本的 Rails?
  • 我正在运行 Rails 3.2.15

标签: ruby-on-rails link-to-function


【解决方案1】:
<p><%= truncate(User.find(comment.user_id).username, length: 13) %> commented on <%= truncate(step.name, length: 20) %>: "<%=truncate(comment.body)%>"

在您使用的上述代码中,为什么最后一部分 被双引号括起来。我用下面给出的示例代码尝试了同样的方法。

<li class="comment-list-item" id="1">
<%= link_to_function "test", "goToStepComment('12', '1222')" do %> 
    <div class="comment-list-image">
    <p>Something</p>
    </div>
    <div class="comment-list-title">
          <p>FooBar</p>
    </div>
<% end %>
</li>

这产生了下面给定的html内容。

<li id="1" class="comment-list-item">
    <a onclick="goToStepComment('12', '1222'); return false;" href="#">test</a>
</li>

我认为错误是由您在顶部提到的代码中给出的双引号引起的。

【讨论】:

  • 感谢您的帮助。我删除了双引号,但这并没有解决问题。看起来在上面的示例中,您也无法将“Something”和“Foobar”包装到输出 HTML 中,对吗?
  • 是的。我不能把那些东西包起来。抱歉,我没有注意到它是 link_to_function。您可以使用 link_to,而不是使用 link_to_function。您可以通过 javascript 处理程序附加的单击事件。我发现在 Rails 社区中使用 link_to_function 方法有些大惊小怪,每个人都在推动使用带有事件处理程序的普通 link_to。也试试这个方法。
【解决方案2】:

我去掉了 link_to_function,当用户点击 li 元素时,我只调用了 goToStepComment 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2014-11-16
    相关资源
    最近更新 更多