2011-04-19 4 views
2

내 사이트에서 hipay를 사용하고 싶습니다. 그래서 나는 액션에서 xml을 생성하고 hipay 사이트에 게시물을 통해 보내야합니다.레일즈 빌더가 작동중인 xml 작성

내 질문은 :

난 dinamically 다음 XML을 생성 할 수있는 방법

, 같은 행동에, 우편으로이 XML을 보내? XML 데이터를 가정하면 미리

답변

4

내 컨트롤러

def action_generate_xml 
    @xml = Builder::XmlMarkup.new() 
    # I want generate my xml here 
    # 
    # 
    # End generate xml 
    #Now i want send My XML via post 
    #CODE FOR SEND VIA POST 
end 

감사는 당신에게 개체의 XML 표현을 줄 것이다 to_xml을 호출 액티브 오브젝트에 앉아있다. Ruby의 Net : HTTP 모듈을 사용하여 게시물을 처리 할 수 ​​있습니다.

http = Net::HTTP.new("www.thewebservicedomain.com") 
response = http.post("/some/path/here", your_model_object.to_xml) 

당신이 컨트롤러 내부 당신의 XML 생성 할 (아주 레일처럼되지를하지만 여전히 그것을 할 수 있습니다) 빌더 보석 사용하는 경우 :

xml = Builder::XmlMarkup.new 
xml.instruct! :xml, :verison => "1.0" # Or whatever your requirements are 
# Consult the Builder gem docs for different ways you can build up your XML, this is just a simple example. 
xml.widgets do 
    xml.widget do 
    xml.serial_number("12345") 
    xml.name("First Widget") 
    xml.any_other_tag_you_need("Contents of tag") 
    end 
end 
# And now send the request 
http = Net::HTTP.new("www.thewebservicedomain.com") 
response = http.post("/some/path/here", xml) 

두 번째 예는 다음과 같은 XML 문자열을 생성을 HTTP POST는 대상 서버에 연결합니다.

<inspect/><?xml version=\"1.0\" encoding=\"UTF-8\" verison=\"1.0\"?><widgets><widget><serial_number>12345</serial_number><name>First Widget</name><any_other_tag_you_need>Contents of tag</any_other_tag_you_need></widget></widgets> 
+0

실례합니다. 이해가 안되네. 왜 내가 XML을 ActiveRecord 객체에 저장 하는가? 난 단지 행동에서 XML을 만들고 게시물을 통해 보내고 싶습니다. 이제는 내 게시물을 편집하고 예제를 작성합니다. 감사합니다 – maxiperez

+0

다시 실례합니다. xml에는 다른 정보와 태그가 있습니다. hipay documentation의 XML 피드를 따라야합니다. 따라서 XML에 다른 태그를 만들어야합니다. – maxiperez

+0

@maxiperez 내가 제공 한 예제는 xml을 ActiveRecord에 저장하지 않고 ActiveRecord 객체를 객체의 내용을 나타내는 xml 문자열로 변환합니다. 이것은 일반적인 레일 이디엄입니다. 나는 몇 분 안에 나의 대답을 다시 쓰고 당신이 찾고있는 것의 라인을 따라 더 많은 것을 보여줄 것이다. 실례지만 – MDaubs