2013-08-03 49 views
0

如何獲得一個視圖/控制器的XML輸出字符串相同CONTROLER的Rails如何獲得URL的輸出字符串

這是路線文件中

的routes.rb

map.ccda '/ccda/ccda_patient_search', :controller => 'ccda', :action => :ccda_patient_search 
map.ccda '/ccda/:id.:format', :controller => 'ccda', :action => :index 

ccda_controller.rb

class CcdaController < ApplicationController 
def index  
    # 
    # some process 
    # result = User.find(params[:id]).result 
    # 
    @ccda = result 
    respond_to do |format| 
    format.xml { render :layout => false, :template=> "index.xml.builder" } 
    format.any { redirect_to login_url } 
    end 
end 

def get_xml 
    # render_to_string 'index', :layout=>false, :formats=>[:xml], :locals=>{:id=>147} => Not working 
    # render_to_string '147.xml' => Not working 
    # 
    # How do I get the output of 'http://localhost/ccda/147.xml' here??? 
    # 
end 

end 

我會使用url localhost/ccda/147.xml查看/生成用戶造成的XML

現在我想要的網址作爲字符串的輸出,而無需返回到瀏覽器

我試圖使用render_to_string同一控制得到它方法用不同勢參數,但似乎沒有任何工作

FYI:我使用的軌道2.3.12和生成器:: XmlMarkup中 API

+0

您是否已有xml模板視圖? – Mattherick

+0

@Mattherick是的 – shiva

回答

0

最後我發現,我們需要因爲默認情況下軌手動指定視圖文件將尋找index.erb所以我所做的就是這個

render_to_string(:action=>"index", :view => "/ccda/index.xml.builder", :format=>:xml,:layout=>false,:id=>146, :template=>"/ccda/index.xml.builder") 

指定:view:template手動解決了我的問題

0

如何使用下面的調用(C內ontroller,採取已知選項從你的問題):

render_to_string(:template => 'ccda/index.xml.builder', :layout => false, :id => 147)

由於documentation,這將工作到Rails的版本2.3.8,所以我不知道這是否是提供任何更多的Rails 2.3.12你正在使用。

PS:如何升級到Rails 3中的至少一個版本?我沒有改變來測試我的解決方案,所以它是或多或少的猜測。

+0

它顯示'嘗試代碼和升級需要幾個月,因爲它是一個巨大的項目'視圖路徑中缺少模板index.erb – shiva

+0

改變了我的答案,但很難測試(對我來說)。 – mliebelt

+0

沒有運氣,在視圖路徑中找到'丟失模板147.xml' – shiva

0

下面的情況如何?

render_to_string :controller => 'ccda_controller', :action => 'index', :id => 147, :format => :xml 
相關問題