Ruby on rails Rails远程窗体并选择“更改时不工作”
我试着跟随: 但是,这些选项在submit、submit和submit上似乎都不起作用 这是我目前正在刷新页面的内容:Ruby on rails Rails远程窗体并选择“更改时不工作”,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试着跟随: 但是,这些选项在submit、submit和submit上似乎都不起作用 这是我目前正在刷新页面的内容: = simple_form_for task, :remote => true, :format => :js do |f|` = f.association :status, :label => false, :include_blank => false, :input_html => {:onchange=>'this.form
= 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提交,并从onchange调用该函数,使用$.post将表单发送到服务器 我最后按照马克的建议做了一个活动绑定
= 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("<span id='task_#{task.id}_success' class='label success right'>SAVED</span>");
$('#task_#{task.id}_success').delay(500).fadeOut();
}
});
只需将onchange改为:
{:onchange=>'$(this.form).submit();' }
这项工作非常出色,无需编写手动处理程序代码或跳过其他环。