Rails Ajax form_for启用多个提交(无法禁用提交按钮)

时间:2017-06-04 17:37:18

标签: ruby-on-rails ajax forms form-for

我遇到了一个用于渲染错误的ajax表单的问题,但它允许用户基本上无限次地提交,只要他们继续捣碎提交按钮。发生的情况是,当用户按下提交按钮时,它会使用disable_with文本灰显几分之一秒,然后再次变为可点击状态。然后,用户可以继续按下并发出帖子请求。仅当用户停止时才会发生重定向。我已经基本搜索了这个特定问题的所有答案,但他们似乎并不适合我。我想知道是否有人可以提供帮助。

我尝试使用javascript来停用按钮并使用数据:{disable_with:" ..."}。

这是我现在的.html.erb代码:

<div class="container-fluid main-container">
  <%= form_for [@group, @task], remote: true do |f| %>
    <%= f.label :name %>
    <%= f.text_field :name, class: "form-control" %>

    <%= f.label :description %>
    <%= f.text_area :description, class: "form-control" %>

    <%= f.label :priority %>
    <%= f.text_field :priority, class: "form-control" %>

    <%= f.label :user %>
    <%= f.select :user_id, options_for_select(@group.options_for_user), {}, class: "form-control" %>

    <%= f.submit "Create Task", class: "btn btn-primary new-task-button", data: {disable_with: "Creating task..."} %>
  <% end %>
</div>

这是我的任务new和创建动作的控制器代码

def new
  @group = Group.find(params[:group_id])
  @task = Task.new
end

def create
  new_user = User.find(task_params.delete(:user_id))
  @task = Task.new(to_update)
  respond_to do |format|
    if @task.save
      @group.tasks << @task
      new_user.tasks << @task
      format.html {redirect_to @group}
      TasksChannel.broadcast_to(@group, {action: "create", data: @task, user: new_user}) 
    else
      @errors = @task.errors
      format.js {render :file => "layouts/errors.js.erb"}
    end
  end
end

def task_params
  return params.require(:task).permit(:name, :description, :priority, :user_id)
end

我已经被困在这一段时间了,这太令人沮丧了。我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  1. 检查页面中的html是否具有该属性。在localhost:3000打开浏览器并打开开发人员工具栏以检查html元素。

  2. applicationscript.js文件中编写一些Jquery,并测试问题是否已解决。也许与turbo-links或其他东西有一些冲突

    $('#my-button').prop('disabled', true);
    
  3. Disabling button after disable_with

    1. 在一个没有红宝石的简单jquery项目上测试效果..