每次我提交表单时,我都会被重定向到/用户,Chrome会一直给我一个错误,上面写着“没有收到任何数据”#39;一致。我试过评论所有验证的东西,但我得到了完全相同的问题。我通常会自己继续调试,但重定向上缺少rails错误消息让我陷入困境。
这是我的用户控制器:
class UsersController < ApplicationController
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
flash[:notice] = "You Signed up successfully"
flash[:color]= "valid"
redirect_to '/'
else
flash[:notice] = "Form is invalid"
flash[:color]= "invalid"
redirect_to 'new'
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
end
这是我的用户模型:
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
validates :first_name, presence: true, length: { maximum: 50 }
validates :last_name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, length: { minimum: 6 }
end
这是我的表格:
<%= form_for(@user) do |f| %>
<div class="form-group" style="margin-top: 30px">
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password %>
<%= f.password_field :password_digest, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
</div>
<%= f.label :first_name %>
<%= f.search_field :first_name, class: 'form-control' %>
<%= f.label :last_name %>
<%= f.search_field :last_name, class: 'form-control' %>
<%= f.submit "Create an Account", class: 'btn btn-primary' %>
<% end %>
编辑:我也尝试在UsersController中创建重定向#create point to&#39; / users&#39;我得到了相同的“没有数据收到&#39;错误。在routes.rb中,我将其设置为 资源:用户 我在index.html.erb文件中有静态html。我可以通过直接访问/ users来访问它。
此外,我不太担心重定向问题,更担心缺少用户的创建。
编辑2:我可以通过播种数据库成功创建用户,但我仍然无法使用表单
创建一个用户答案 0 :(得分:0)
经过大量的捣乱和熬夜之后,我可以说我已经征服了。
我忘了把:password_confirmation放在控制器中user_params的.permit部分。现在它写着:
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
虽然我仍然对Chrome错误感到好奇