2015-03-08 45 views
0

为什么当使用ajax帮助器时,此create操作无限循环?为什么在使用ajax帮助器时会创建动作无限循环?

class UsersController < ApplicationController 
    def index 
     @user = User.new 
     @users = User.all 
    end 
    def create 
     user_params = params.require(:user).permit(:email, :password) 
     @user = User.create!(user_params) 
     respond_to do |format| 
      create.html {redirect_to users_path} 
      create.js 
     end 
    end 
end 

以上结果导致无限循环的用户被创建。另外,create.js.erb永远不会运行,所以我假设post请求被重复发送。

当我删除respond_to块,用简单的重定向替换它,并从窗体中删除remote: true,一切工作正常。

形式(视图/用户/ index.html.erb):

<%= form_for(@user, remote: true) do |form| %> 
    <%= form.email_field :email, placeholder: "email" %> 
    <%= form.password_field :password, placeholder: "password" %> 
    <%= form.submit "Create User" %> 
<% end %> 

回答

1

要调用的调用方法创建创建无间断跳跃AOUT循环:

正确代码为您的respond_to必须是:

def create 
    user_params = params.require(:user).permit(:email, :password) 
    @user = User.create!(user_params) 
    respond_to do |format| 
     format.html {redirect_to users_path} 
     format.js 
    end 
end 
+0

现在大'杜'时刻... – nipponese 2015-03-08 19:25:20