我一直在尝试使用带有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上找不到与此问题相关的任何其他问题或与此相关的任何问题。这是某种期望行为的副作用吗?或者这个用例不是这些方法中的哪一种设计的?
我正在使用:
提前致谢。
答案 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组件。