2017-06-04 28 views
0

我有我使用的渲染错误的AJAX形式的问题,但它允许,只要他们保持捣碎的用户基本上提交的时间无限数量提交按钮。当用户按下提交按钮时,会发生什么情况,它会使用disable_with文本灰显几分之一秒,然后再次变为可点击。用户然后可以继续按下并发出发布请求。只有当用户停止时,重定向才会发生。我基本上搜索了这个特定问题的所有答案,而且他们似乎并不适合我。我想知道是否有人可以帮忙。的Rails阿贾克斯的form_for正在使多个提交(无法禁用提交按钮)

我用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> 

这里是新的任务,我的控制器代码并创建行动

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 

我一直停留在这一段时间,这是如此令人沮丧。我将不胜感激任何帮助。

+0

什么''to_update? –

+0

对不起,意在删除。我会更新它。这只是强大的过滤参数,即params.require(:任务).permit(....) –

回答

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

  2. 写一些jQuery的你applicationscript.js文件和测试问题是否得到解决。也许有一个与涡轮链接或一些冲突否则

    $('#my-button').prop('disabled', true); 
    

Disabling button after disable_with

东西
  • 测试的效果还取决于简单的jQuery项目,而不Ruby on Rails的。 。
  • +0

    谢谢你的提示!如果有人遇到同样的问题,我最终不得不关闭按钮并禁用create.js.erb中的数据禁用。然后,因为控制器中的重定向不起作用,我使用javascript重定向。 –

    +0

    @JerryChen好的。不容易..太棒了! –