在link_to方法中使用ActiveAdmin的status_tag,导致标记呈现两次

时间:2016-07-13 19:55:41

标签: ruby-on-rails-4 activeadmin

我一直在尝试使用带有ActiveAdmin link_to的{​​{1}}帮助程序创建超链接时遇到一些意外行为。将status_tag传递给status_tag方法会导致代码呈现两次。

具体来说,如果您有ActiveAdmin资源,请将其命名为Foo.rb:

link_to

这会在索引表中生成以下html:

ActiveAdmin.register Foo do
  index do
     column "Bar" do |hh|
        link_to status_tag('test', label: 'testing', class: 'error'), edit_admin_bar_path(hh.bar)
     end
  end
end
对于<td class="col col-bar"> <span class="status_tag test error">testing</span> <a href="/admin/bar/1/edit"> <span class="status_tag test error">testing</span> </a> </td>

Looking at the source,我不禁想知道它是否在构建方法中调用status_tag时呈现标记,同时返回ActiveAdmin::Views::StatusTag时它完整​​并将该值传递给super。但我不完全确定。

我在Google上找不到与此问题相关的任何其他问题或与此相关的任何问题。这是某种期望行为的副作用吗?或者这个用例不是这些方法中的哪一种设计的?

我正在使用:

  • activeadmin(1.0.0.pre2 0ac35b7)
  • Rails 4.2.5.2

提前致谢。

1 个答案:

答案 0 :(得分:1)

解决方法可能是将status_tag包装到新的Arbre上下文中。这应该避免标签直接写在主要上下文

这样的事情:

link_to Arbre::Context.new { status_tag('test', label: 'testing', class: 'error') }, edit_admin_bar_path(hh.bar)

我知道......它看起来很难看!但是你可以放入Rails助手或将其编码为Arbre组件。