2010-05-27 44 views
0

我想知道是否有通過Ruby on Rails獲得'動態路徑'到.js文件中。帶有Rails的new.AjaxRequest中的動態路徑

例如,我有以下幾點:

new Ajax.Request('/tokens/destroy/' + GRID_ID, {asynchronous:true, evalScripts:true, onComplete:function(request){load('26', 'table1', request.responseText)}, parameters:'token=' + dsrc.id + '&authenticity_token=' + encodeURIComponent(AUTH_TOKEN)}) 

主要的網址爲「/標記/銷燬/:身份證」,但我的生產服務器上這個程序運行作爲一個子文件夾。因此,對於這個Ajax調用的URL需要是 '/ qrpsdrail /標記/銷燬/:身份證'

這是正在從所謂的URL將 /柵板/ 1/qrpsdrail /格/ 1

當然,我可以做../../路徑 - 但這看起來有點冒失。它也依賴於從不改變的路由,在這個階段我不能保證。 我只是想看看有什麼其他解決方案可能對這個問題。

感謝提前:)

回答

1

也許有點hackish解決方案,但我有一個像描述配置文件,所以你可以不喜歡,裏面config.yml

development: 
    root:/

production: 
    root: /qrpsdrail/ 

,當你建立你的Ajaxrequest,你可以寫

new Ajax.Request("#{AppConfig.root}tokens/destroy/' + ... 

但它仍然看起來應該有一個更清潔的方式解決這個問題;)

+0

我有點類似於這個,但是我仍然認爲它是「hackish」...我只是在模板的頂部設置了var ROOT_PATH =#{root_path},並且可以在靜態grid.js庫中使用它。 我正在調查可能使用JavaScript模板(rjs?)...但從我讀過的文件不會像.js文件那樣緩存。 – Robbie 2010-05-28 21:36:16

0

您可以在軌道

使用javascript使用動態路徑new.AjaxRequest的JavaScript

function dynamic_ajax(GRID_ID) 
    { 
     new Ajax.Request("/tokens/destroy?"+GRID_ID, {asynchronous:true, evalScripts:true, onComplete:function(request){load('26', 'table1', request.responseText)}, parameters:'token=' + dsrc.id + '&authenticity_token=' + encodeURIComponent(AUTH_TOKEN)}); 
    } 

HTML

<a href="javascript:void(0)" onclick="dynamic_ajax('1')">Grid Id 1 </a> 
<a href="javascript:void(0)" onclick="dynamic_ajax('2')">Grid Id 2 </a> 
<a href="javascript:void(0)" onclick="dynamic_ajax('3')">Grid Id 3 </a> 
+0

的問題是不是這是一個常數,我居然在申請的其他地方初始化GRID_ID - 問題是,Ajax.Request的呼叫的網址 - 它不適用於我的環境,因爲它調用絕對路徑。對不起,如果問題不明確。 – Robbie 2010-05-27 17:06:59

0

您可以將路徑設置爲您的html對象的屬性,啓動ajax調用。一個例子是:

HTML

<a id='my_clicky_thing' href='#' rails_path='<%= tokens_destroy_path %>'>Click me</a> 

JQuery的

$('#my_clicky_thing').live('click', function(){ 
    var ajax_path = $(this).attr('rails_path'); 
    /* Do ajax stuff here with the path */ 
}); 

這將允許您使用實際的軌道路徑在你的.js文件,你在你的意見辦。

(此代碼可能無法正常工作,它是唯一的概念)