4

twitter-bootstrap-railsがインストールされている場合、ジェネレーターを使用します。

rails g bootstrap:themed Model

次のような行を含むビューを作成します。

  <th><%= model_class.human_attribute_name(:comment_date) %></th>
  <th><%= model_class.human_attribute_name(:comment_time) %></th>

ここで、デフォルトのRailsジェネレーターは、人間が読み取れる列名を直接挿入します。

 <th>Comment date</th>
 <th>Comment time</th>

これにより、ビューがすっきりし、実行時の効率が向上するようです。

twitter-bootstrap-railsで生成されたビューに利点はありますか?

ありがとう!

(追記、開発者のWebサイトはオフラインであり、githubもgoogle +もプライベートメッセージの送信を許可していません。また、githubの「問題」も、google +の投稿に対するパブリックコメントも、この質問には適切ではないようです。 model_class.human_attribute_name()のユースケース)

4

1 に答える 1

5

そのソースを見てください、そして物事はあなたに明らかになるでしょう:

# File activemodel/lib/active_model/translation.rb, line 45
def human_attribute_name(attribute, options = {})
  defaults  = []
  parts     = attribute.to_s.split(".", 2)
  attribute = parts.pop
  namespace = parts.pop

  if namespace
    lookup_ancestors.each do |klass|
      defaults << :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}/#{namespace}.#{attribute}"
    end
    defaults << :"#{self.i18n_scope}.attributes.#{namespace}.#{attribute}"
  else
    lookup_ancestors.each do |klass|
      defaults << :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}"
    end
  end

  defaults << :"attributes.#{attribute}"
  defaults << options.delete(:default) if options[:default]
  defaults << attribute.humanize

  options.reverse_merge! :count => 1, :default => defaults
  I18n.translate(defaults.shift, options)
end

human_attribute_name属性名をローカライズするのに最適です。英語のみを使用するアプリを作成している場合でも、ビジネスの拡大計画についてクライアントからのメールが受信トレイにすでに送信されている可能性があります。この拡大には、人々が右から左に書く国が含まれます。

使い方

Product属性を持つモデルがあると仮定しtitleます。このように呼び出すhuman_attribute_name

Product.human_attribute_name 'title'

I18n.t次のパラメータを使用して呼び出します(上記のスニペットの最後の行を参照)。

I18.t 'activerecord.attributes.product.title', {
  :count=>1, 
  :default=>[:"attributes.title", "Title"] 
}

したがって、特定のモデルおよび特定の属性の名前に固有の翻訳を提供できます。これらの翻訳のいずれかを提供しない限り、メソッドを介して作成された属性の英語バージョンを取得しますhumanize

于 2012-06-10T21:12:54.163 に答える