为什么在使用 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