2011-10-04 57 views
1

我有這樣的代碼:如何使用.js.coffee腳本路徑軌道

$('#my_form .submit').click(-> 
    $.ajax(-> 
    type: "post", 
    url: "????", 
    data: $("#myform").serialize(), 
    #success: this.saveUserResponse 
) 

POST /schedule_details(.:format)     {:action=>"create", :controller=>"schedule_details"} 

我想這是兩個問題,或尋找做正確的方式。我如何使用shedule_details_create_path以及如何在JavaScript中使用它?或者,有沒有更好的方法來做到這一點?

謝謝你的幫助。

回答

4

如何悄悄地AJAXify的形式,而不是認購提交按鈕的點擊處理程序:

$('#my_form').submit(function() { 
    $.ajax({ 
     type: this.method, 
     url: this.action, 
     data: $(this).serialize(), 
     success: this.saveUserResponse 
    }); 
    return false; 
}); 

您可以使用路由產生的形式,並有其作用這樣的標記屬性設置正確。那麼你的JavaScript是完全獨立的。

+0

令人驚訝的是,我知道我只是想着它而已。謝謝! –

0
在你的routes.rb

你可以寫這樣的事情:

match "/schedule_details/create" => "schedule_details#create" 

,並把/ schedule_details /創建的網址:你的Ajax調用的PARAM。

希望我明白你的需要!

+0

剛剛在網址參數中放入/ schedule_details /創建的問題是我的測試機器使用localhost:3000/schedule_details/create,但我的生產機器是example.com/ts/schedule_details/create。所以/ schedule_details/create會在生產機器上中斷。感謝您的信息,儘管 –

1

js-routes寶石很適合我。

的Gemfile:

gem "js-routes" 

需要在application.js中的js文件的航線。

rake tmp:cache:clear 
rails s 

最後在你的CoffeeScript文件:

Routes.users_path() 
# => "/users" 
Routes.user_path 1 
# => "https://stackoverflow.com/users/1" 
Routes.user_path 1, format: 'json' 
# => "https://stackoverflow.com/users/1.json" 
Routes.user_path 1, anchor: 'profile' 
# => "https://stackoverflow.com/users/1#profile" 
Routes.new_user_project_path 1, format: 'json' 
# => "https://stackoverflow.com/users/1/projects/new.json" 

對於高級試圖JS-航線首次並重新啓動軌服務器之前

//= require js-routes 

刷新資產管道緩存配置,只需檢查js-routes github repo

+0

@dbugger好的,我會在我的答案中添加一些更多細節。 – artificis