2010-01-14 2 views
3

동적 xml을 생성하는 도구를 빌드하고 있습니다. 내가 프로젝트 컨트롤러에서 XML을 빌드 할 때 Ruby의 빌더에서 노드 이름 사용자 정의

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의 루트 노드 : 결과 내 모델은 매우 일반적인 이름이 있습니다. 그러나 나는 그것을 "프로젝트"라고 부르고 싶지 않습니다. 나는 노드가 @ project.params [ 'name'] 값이 무엇이 되길 원한다.

xml.project do 
    ~some code 
end 

... 항상 루트 노드의 이름으로 "프로젝트"를 만들 것 :

제가하는 데 문제는 내가 할 때 ... 빌더의 구조가이 어렵게된다는 점이다 . 다른 이름을 사용하도록 재정의하는 방법을 찾을 수 없습니다. 나는 다음과 같은 것이 효과가 있기를 바랬다 :

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

..하지만 그것은 분명히 작동하지 않는다. 그래서 필자는 본질적으로 내 params 모델에서 구성한 요소 이름의 별칭을 찾는 방법을 찾으려고합니다. 어떤 제안이라도 대단히 감사하겠습니다.

답변

6

대신 xml.project 일을 시도 : 요소 이름에 하이픈이있는 경우에도 사용되어야한다

xml.tag! @project.params.name do 

.

+0

나는 이것도 알아 냈다. 응답 주셔서 감사합니다! –

관련 문제