为什么这个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
,一切正常。
表单(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 %>
答案 0 :(得分:1)
你正在一个名为create的方法中调用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