为什么这会在使用 ajax 帮助程序时创建操作无限循环



为什么在使用 ajax 助手时,这create操作无限循环?

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时,一切正常。

表单(views/users/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 %>

您正在调用 create 的方法,无需中断即可跳出循环:

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

最新更新