2011-08-20 23 views
0

我有存儲在我的網頁一些模板查看目錄:如何從一個子目錄呈現幾個模板在Ruby on Rails的

頁/設置/ edit_account/ basic_info.html.erb relatives.html.erb contact.html.erb

我有一塊使用jQuery .load功能的JavaScript。我基本上允許用戶點擊頁面上的鏈接:基本信息,親戚,聯繫人並獲得他們需要查看的信息,以便使編輯顯示在同一頁面上而不會讓人耳目一新。如果我使用這個路徑「profile_path」,這是我在路線中設置的路徑,那麼它工作得很好。

例子:

<script type="text/javascript"> 
     $("#theBasics").click(function() { 
      $("#editProfileContent").load(<%= profile_path %>); 
}); 

我想,雖然做的是建立更多的這些功能爲每個在頁/設置/ edit_account模板/

這不起作用:

<script type="text/javascript"> 
     $("#theBasics").click(function() { 
      $("#editProfileContent").load(<%= render 'pages/settings/edit_account/basic_info' %>); 

     }); 

我能爲他們創造在控制器中的幾個動作,並設置路線或我能創造一個全新的控制器。

但一定要實現我想要實現一個更清潔的方式。我不能對所有模板使用1個動作嗎?

如果我把render'pages/settings/edit_account/basic_info'放到頁面控制器的一個動作中,然後在javascipt .load函數中,我可以得到這個工作我只是調用動作路由,它可以工作,但我只能渲染一次一個模板。

我希望我沒有混淆任何人。

幫助將不勝感激。

回答

0

最好的辦法是創建多個動作。每個ajax調用都應該有自己的動作終點,如果它正在加載不同的信息,或者該信息的不同視圖。

如果唯一的區別是在視圖,可以使用單一的控制器動作,並傳遞一個參數,該參數可以然後在操作的渲染階段用來控制使用哪個視圖。

例如:

case params[:view] 
    when 'contact' render 'pages/settings/contact...' 
    when 'relatives' render 'pages/settings/relatives...' 
end 

然後

$("#dest").load('<%= profile_path({ :view => 'contact' }) %>'); 
在JavaScript

+0

謝謝現場。我在控制器的動作中使用這種情況。我想知道是否有一個相當於php版本的rails,因爲這是我將如何解決它。謝謝 – LondonGuy

相關問題