如何在.js.coffee脚本rails中使用路由

时间:2011-10-04 17:45:20

标签: javascript routes ruby-on-rails-3.1 coffeescript

我有这段代码:

$('#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中使用它?或者,有更好的方法吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

如何不引人注意地AJAX化表单而不是订阅提交按钮的单击处理程序:

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

这样您就可以使用路由生成表单并在标记中正确设置其action属性。然后你的javascript完全独立。

答案 1 :(得分:1)

js-routes gem对我很有用。

的Gemfile:

gem "js-routes"

在application.js中需要js routes文件。     

//= require js-routes

首次尝试js-routes之前刷新资产管道缓存并重新启动rails服务器:

rake tmp:cache:clear
rails s

最后在你的coffeescript文件中:     

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

对于高级配置,只需检查js-routes github repo

答案 2 :(得分:0)

你的routes.rb中的

你可以这样写:

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

并将/ schedule_details / create放在你的ajax调用的url:param中。

希望我理解你的需要!