13

「真」と「偽」の代わりに「はい」と「いいえ」を表示するアクティブな管理者を作成するにはどうすればよいですか。

英語ロケールに変更しようとしましたが、うまくいきません。ブール値クラスにモンキーパッチを適用することを考えていますが、これはかなり醜いようです。

他にできることはありますか?

4

7 に答える 7

55

あなたはこのようなことをしたいかもしれません:

index do
  id_column
  column(:published) do |story| 
    story.published? ? status_tag( "yes", :ok ) : status_tag( "no" )
  end
end

これにより、"yes" と "no" という単語がかなり見栄えのするステータス タグでラップされます。

于 2013-05-15T16:54:42.713 に答える
9

ここで、これは機能し、チェックマークとクロスが表示されますが、簡単に変更できるようです。

https://gist.github.com/2574969

これを機能させるには、Rails サーバーを再起動する必要があります。これは、active_admin.rb 初期化子を変更するためです。

もちろん、回避したいクラスを作成しますが、他に何もない場合、これは機能します。

于 2012-06-02T15:58:37.447 に答える
2

アフマドが言ったように、あなたはそのためだけにクラスを作成することを避けたいと思っています。

したがって、別の解決策があります。

active_admin.en.ymlロケール(またはその他)に、次の2行を追加するだけです。

en:
  "true": Yes
  "false": No

次に、たとえばapp / admin / my_model.rbファイルで、インデックスページにYes / Noを表示するには、次のようにします。

column :published do |post|
      t(post.published.to_s)
end

したがって、ブール値を文字列化し、「t」関数(i18n変換)を使用するだけで、Railsはロケールファイルで正しい変換を検索し、「true/false」を「Yes/No」に置き換えます。

これはより良い解決策だと思います。「RailsS​​pirit」に従うと、さまざまな言語でactive_adminパネルを使用するのが簡単になります。

欠点(常に1つあるため)は、ブール値をYes/Noに置き換えるたびに「t」関数を使用する必要があることです...

active_admin gemにプルリクエストを送信して、私が行ったようにymlファイルを変更するだけでブール値を置き換える可能性を提供するのは素晴らしいことです。

しかし...それが完了するまで、私のソリューションは正常に機能します。:)

于 2012-10-25T08:16:09.503 に答える
0

余分な依存関係が気にならない場合は、機能を自動化し、i18n をサポートするhttps://github.com/parabuzzle/humanize_booleanを確認してください。

于 2016-06-25T13:20:35.553 に答える