ruby-on-rails - 在 Ruby 的构建器中自定义节点名称

标签 ruby-on-rails xml ruby builder

我正在构建一个生成动态 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

所以当我从项目 Controller 构建 xml 时,项目节点名称是 xml 的根节点。但我不希望它被称为“项目”。我希望节点是 @project.params['name'] 值是什么。

我遇到的问题是构建器的结构使这变得困难......当我这样做时:

xml.project do
  ~some code
end

...它总是会创建“project”作为根节点名称。我找不到一种方法来覆盖它以使用不同的名称。我希望像下面这样的东西会起作用:

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

..但这显然行不通。所以我本质上是想找到一种方法来为我的 params 模型中配置的元素名称起别名。任何建议将不胜感激。

最佳答案

不要做 xml.project,试试:

xml.tag! @project.params.name do

如果元素名称中有连字符,也应该使用它。

关于ruby-on-rails - 在 Ruby 的构建器中自定义节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067173/

相关文章:

ruby-on-rails - 如何在Ruby on Rails中修补猴子?

ruby-on-rails - 如何在 Rails 3 中制作自定义 _url 助手?

ruby - 使用 gsub() 转义 "$"

ruby-on-rails - 访问用户密码: Variable Scope in Rails

ruby-on-rails - 如何跨模型共享代码? ( rails 2.3)

ruby-on-rails - 错误: Paperclip styles

python - 如何使用 beautifulsoup 获取原始文本?

java - DOM paser setExpandEntityReferences(false) 生成实体引用和扩展文本节点

r - 使用 R 中的 Xpath 根据另一个属性及其父属性获取节点的属性

ruby-on-rails - 并在方法结束时返回