2016-07-13 3 views
0

ActiveAdmin status_taglink_toヘルパーを使用してハイパーリンクを作成しようとすると予期しない動作が発生しています。 status_taglink_toメソッドに渡すと、タグが2回レンダリングされます。あなたはActiveAdminリソースを持っている場合link_toメソッドでActiveAdminのstatus_tagを使用すると、タグが2回レンダリングされる

具体的に、Foo.rbそれを呼び出す:

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 

を。これは、インデックステーブル内で次のHTMLを生成します。私ができる、status_tagため

<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」ビルドメソッドでsuperを呼び出したときにタグをレンダリングするかどうかと、ActiveAdmin::Views::StatusTagを返して、その値をlink_toに渡すと、ActiveAdmin::Views::StatusTagが返されます。しかし、私は完全にはわかりません。

Googleでこの問題やこれに関連するその他の質問が見つかりませんでした。これはいくつかの望ましい行動の副作用ですか?あるいは、このユースケースは、これらの方法のどれが設計されたものではないのですか?

私が使用しています:事前に

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

感謝を。

答えて

1

新しいArbreコンテキストにstatus_tagをラップすることで回避することができます。それは醜い...私が知っている

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

:それはメインのコンテキストに直接書き込まれるように、このような

何かをタグを避ける必要があります!しかし、あなたはRailsヘルパーに入れたり、Arbreコンポーネントとしてコード化することができます。

関連する問題