3

動的 xml を生成するツールを構築しています。その結果、私のモデルにはかなり一般的な名前が付けられています。

Project 
  has_many    :Groups

Group
  has_many    :Items
  has_many    :Groups
  belongs_to  :Project

Item
  has_many    :Params
  belongs_to  :Group

Param
  belongs_to  :Project
  belongs_to  :Group
  belongs_to  :Item

したがって、プロジェクト コントローラーから xml をビルドすると、プロジェクト ノード名は xml のルート ノードになります。しかし、私はそれを「プロジェクト」と呼びたくありません。@project.params['name'] の値が何であれ、ノードを指定します。

私が抱えている問題は、ビルダーの構造がこれを困難にしていることです...私がそうするとき:

xml.project do
  ~some code
end

...ルートノード名として常に「プロジェクト」を作成します。別の名前を使用するようにオーバーライドする方法が見つかりません。私は次のようなものがうまくいくことを望んでいました:

xml.send(@project.params.name) {
  ...some code
}

..しかし、それは明らかに機能していません。したがって、私は基本的に、params モデルで構成されている要素名にエイリアスを付ける方法を見つけようとしています。どんな提案でも大歓迎です。

4

1 に答える 1

6

xml.project を実行する代わりに、次のことを試してください。

xml.tag! @project.params.name do

要素名にハイフンがある場合にも使用する必要があります。

于 2010-01-14T20:07:32.813 に答える