【问题标题】:How to create a route to a controller method which is called by a POST AJAX request如何创建到由 POST AJAX 请求调用的控制器方法的路由
【发布时间】:2016-06-14 21:41:48
【问题描述】:

我试图弄清楚如何创建一个到控制器方法的路由,该控制器方法由 jQuery 中的 POST ajax 请求调用。我有一个使用 AJAX 更新设置时间的函数,它从 select_tag 接收数据。以下是该方法的以下代码:

    ,update_setup_time: function(e) {
    var d = $('#setup_form_popup').val();
    $.ajax({
        url: '/events/update_setup_time_p',
        type: 'POST',
        dataType: 'json',
        data: d,
        success: function() {
            alert(d + "how are you doing?");
        }
    });
}

我希望 URL 调用方法 update_setup_time_p,这是控制器中的一个方法。但是,我如何在 route.rb 文件中路由到这个?感谢您提供任何和所有帮助。

【问题讨论】:

  • 没有解决问题......不知道为什么,但仍然存在路由错误。我了解 resources :events 为控制器的创建操作创建了一个 POST 路径。只是不知道为什么还有那个错误
  • 好吧,我将 http 请求更改为 PATCH,这似乎有效。但 id 标识为
  • update_setup_time_p,这里是错误:
  • ActiveRecord::RecordNotFound - 找不到带有 'id'=update_setup_time_p 的事件

标签: jquery ruby-on-rails ruby ajax


【解决方案1】:

试试这样的。

post '/events/update_setup_time_p', to: 'your_controller#update_setup_time_p'

【讨论】:

  • 还是出现路由错误,说没有路径
【解决方案2】:

试试这个。

$.ajax({
  beforeSend: function(xhr) { xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
  type: 'POST',
  url: '/events/update_setup_time_p',
  data: d,
  success: function() {
      alert(d + "how are you doing?");
  }
});

【讨论】:

  • 好吧,我把 http 请求改成了 PATCH,这似乎行得通。但是 id 用 update_setup_time 标识,这是错误: ActiveRecord::RecordNotFound - 找不到带有 'id'=update_setup_time_p 的事件
  • 请粘贴AJAX调用的控制台日志
  • ActiveRecord::RecordNotFound - 找不到带有 'id'=update_setup_time_p 的事件 [WHERE events.location_id IN (4470, 9, 4469, 45, 32, 5, 120, 50 , 49, 33, 71, 256, 61, 47)]: activerecord (4.2.5.1) lib/active_record/relation/finder_methods.rb:324:in raise_record_not_found_exception!' activerecord (4.2.5.1) lib/active_record/relation/finder_methods.rb:444:in find_one' activerecord (4.2.5.1) lib/active_record/relation /finder_methods.rb:423:in find_with_ids' activerecord (4.2.5.1) lib/active_record/relation/finder_methods.rb:71:in find'
  • 在 2016-06-14 10:26:40 -0400 为 127.0.0.1 启动 PATCH "/events/update_setup_time_p" 由 EventsController#update 作为 JS 参数进行处理:{"45"=>nil, "id"=>"update_setup_time_p"}
  • 您要执行什么操作?请分享您的控制器代码和路由。
猜你喜欢
  • 2018-04-02
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
相关资源
最近更新 更多