2017-01-24 3 views
0

レールguideでは、「ビルダー」を使用してインラインでレンダリングする例を示します。このビルダーとは何ですか?それは何ですか?通常のerbではなくinline xmlを構築することができる宝石のタイプですか?Rails Builderは何をしていますか?

render inline: "xml.p {'Horrid coding practice!'}", type: :builder 
+0

https://github.com/jimweirich/builder – max

答えて

1

Builder gemは、ActionViewコンポーネントの依存関係です。 XML文書とフラグメントをプログラマチックに構築する簡単な方法を提供します。

Railsでは、ActiveSupport(ハッシュ用)とActiveModelの両方でXMLシリアル化に使用されます。

通常のerbの代わりにインラインXMLを作成することができる宝石のタイプですか?

ビルダーの主な用途は、インラインXMLを作成することではなく、実際に誰も使用しない機能です。代わりに、独自のシリアライザを構築したり、モデルのシリアライズ方法を変更することができます。 ActiveRecord::Serialzers::XmlSerializerのソースで

のコメントはかなりよく、この使用方法を説明します

# Alternatively, you can yield the builder object as part of the to_xml call: 
firm.to_xml do |xml| 
    xml.creator do 
    xml.first_name "David" 
    xml.last_name "Heinemeier Hansson" 
    end 
end 

あなたは、建物のテンプレートのために良いが、再利用可能なコンポーネントを構築またはデータ構造を扱うためのあまり良くないERBでこれを対比することができます。

+0

近い将来、XMLシリアル化がレールコアから削除されても驚くことはありません。 XML paramsの解析は外部の宝石に委譲され、JSONが戦争で勝って以来、ますます少なくなっています。 – max

+0

ありがとう!モデルをシリアライズする(またはシリアライズする)ことは、どういう意味ですか?私が理解していることは、DBにオブジェクトを保存するときにRailsによって自動的に行われるものなので、ARを検索して再びARを見つけることができるということです。 – stackjlei

+1

シリアル化とは、データをJSONやXMLなどの別の形式に変換することを意味します。これは、ハッシュまたは完全なモデル(またはモデルのコレクション)のいずれかです。属性のシリアライゼーションもあります。これはあなたが話していることです。単一のテキストデータベース列にYAMLまたはJSONに変換してハッシュなどのデータを格納する場所です。しかし、PostgresとMySQLにはクエリを可能にするネイティブなJSON型のカラムがあるので、今日はあまり使われていません。 – max

関連する問題