2011-10-29 268 views
0

一切從兩個表在我companies_controller,我有以下幾點:Ruby on Rails的 - 選擇控制器

def show 
@company = Company.find(params[:id], 
:conditions => ['companies.id = addresses.company_id'], 
:joins => [:address]) 
respond_with(@company) do |format| 
format.xml { render :xml => @company} 
end 
end 

其中在結果:

SELECT "companies".* FROM "companies" INNER JOIN "addresses" ON "addresses"."company_id" = "companies"."id" WHERE "companies"."id" = ? AND (companies.id = addresses.company_id) LIMIT 1 

在服務器控制檯。

然而,我試圖得到SELECT *,所以我得到了兩個表中的所有列。我試圖這樣做的原因是因爲我需要curl公司/1.xml來返回所有數據。也許我需要爲公司和地址模型創建一個新的控制器?

謝謝, 克里斯

+1

不你'Company'模型已經指定了'has_one'或'has_many'有地址嗎?如果'Address'有一個對應的'belongs_to',默認情況下它會被急切加載。你正在做這個框架已經爲你做的工作。 –

+0

查看[Rails協會指南](http://guides.rubyonrails.org/association_basics.html)瞭解更多信息。 –

+0

Dave,是 - 公司模型has_one:地址和地址模型belongs_to:company。我可以在companies/show.html.erb頁面上顯示地址字段。當我從終端運行curl http:// localhost:3000/companies/1.xml時,問題就出現了。它只返回公司表中的節點。 – h8windows

回答

0

你應該能夠使用:include這樣的:

render :xml => @company.to_xml :include => [:address] 
+0

戴夫,我正在運行rails 3.1.1,所以我使用format.xml {render:xml => @company,:include => [:address]},它的工作原理!感謝鏈接到協會指南。我有很多閱讀要做。非常感謝你。 – h8windows

+0

@ h8windows酷,是的,不知道哪個版本的目標。請記住接受答案,以便未來的訪問者獲得有關幫助的視覺指示。我建議通過所有的Rails指南來旋轉;他們膚淺,但起點很好。 –