2015-10-14 60 views
2

我有一個觀點
index.html.erb - >
link_to "click me " , 'customers/index' , :remote => true讓js.erb文件沒有Ajax工作的Ruby on Rails的4

控制器 - >客戶

def index 
end 

index.js.erb的

alert('in js file'); 

alert作品精絕。但是如果我不想製作ajax,並且每次加載客戶/索引時我只想讓js.erb文件工作,該怎麼辦?我是rails開發新手,我的問題可能很基本,但我找不到解決方案。我知道當我們需要特定類型時,我們指定了以下內容。但據我知道我的情況是differenct

respond_to do |format| 
format.js 
format.html 
end 

回答

1

你可以簡單地將代碼移動從index.js.erbindex.html.erb

如果你想分開保存它,那麼你可以將js代碼移動到一個局部,並將其渲染到index.html.erb之內。請參閱文檔here

更新

如何使用部分做到這一點:

  1. 創建_yourpartial.js.erb與JS代碼填寫
  2. 要渲染內 'index.html.erb' 代碼補充一點:<%= render partial: 'yourpartial', formats: [:js] %>

(但是當然你仍然需要圍繞js代碼的腳本標記)

+0

難道你不喜歡'js.erb'部分的美麗嗎? :) – nsave

+0

我的意思是創建'_yourpartial.js.erb'並將其呈現在'index.html.erb'內 – nsave

+0

@ImranNaqvi,你檢查了我的更新答案嗎?如果它看起來像一個文本,那麼你只是忘了添加'script'標籤 – nsave

-1

我會盡力幫助你。你可以把你的ajax放入你的application.js。爲了使它乾淨,你必須創建一個文件準備好的功能。當頁面已經完成加載時,文檔就緒功能將被激活。

$(document).ready(function() { 
    callAjaxCustomerIndex(location.pathname); 
}); 

function callAjaxCustomerIndex(current_url) { 
    if (current_url == "/customers") 
    $.ajax({ 
     url: "/customers", 
     async: false, 
     method: "GET", 
     data: { "place_id" : place["place_id"] }, 
     success: function(data){ 
       alert('success'); 
      } 
     }); 
     infoWindow.open(map, marker); 
     buildIWContent(place); 
    }); 
} 

location.pathname是「客戶」時,將發送此ajax請求。我希望這對你有所幫助。

+0

我想你沒有注意到這個問題。我清楚地表明,我希望js.erb在沒有** ajax的情況下工作 – ImranNaqvi