Rails远程表单并选择更改不起作用

我试图遵循: Rails:当点击下拉选项时提交(通过AJAX)

但是,这些选项似乎都不起作用(提交,提交)

这是我目前刷新页面的内容:

= simple_form_for task, :remote => true, :format => :js do |f|` = f.association :status, :label => false, :include_blank => false, :input_html => {:onchange=>'this.form.submit();' }` 

这只是定期发布表单并使页面刷新。

如何让它通过ajax发布,以便页面不会刷新?

虽然rails会覆盖默认操作并在您添加:remote => true时通过AJAX提交,但是您强制表单在onchange事件中发布常规内容。

您需要通过AJAX提交自己的函数并使用$ .post() $ .post()将其从onchange调用,以将表单发送到服务器。

只需将你的onchange更改为:

 {:onchange=>'$(this.form).submit();' } 

根据Marc的建议,我最终制作了一个事件绑定

 = simple_form_for task, :remote => true, :format => :js, :html => {:id => "task_#{task.id}_status"} do |f| = f.association :status, :label => false, :include_blank => false, :input_html => {:id => "task_#{task.id}_status_select" } :javascript jQuery(function($) { $(document).ready(function() { $("#task_#{task.id}_status_select").bind("change", function() { $.ajax({ type: "PUT", url: '#{project_story_type_story_task_path(@project, @story_type, @story, task)}', data: 'task[status_id]=' + $('#task_#{task.id}_status_select').val(), complete: function() { $('#task_#{task.id}_status').prepend("SAVED"); $('#task_#{task.id}_success').delay(500).fadeOut(); } });