我是rails
的新手,所以我有一个Signup
控制器,如下所示:
class SignupController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_path, notice: "You are logged in as #{@user[:username]}"
else
puts @user.errors.full_messages
render :new
end
end
private
def user_params
puts params
params.require(:user).permit(:email, :password, :password_confirmation, :username)
end
end
因此,当我提交表单时,我尝试创建一个新用户,而我的routes.rb
文件包含以下内容:
Rails.application.routes.draw do
root to: "home#index"
get '/about-us', to: "about#index", as: :about
# signing up
get 'sign_up', to: "signup#new"
post 'sign_up', to: "signup#create"
end
我的app/views/signup/new.html.erb
文件中包含以下代码:
<h1>Sign Up</h1>
<%= form_with model: @user, url: sign_up_path do |form| %>
<%= @user.errors.full_messages.inspect %>
<% if @user.errors.any? %>
<div class="alert alert-danger">
<% @user.errors.full_messages.each do |message| %>
<div><%= message %></div>
<% end %>
</div>
<% end %>
<div class="mb-3">
<%= form.label :email, class: "form-label"%>
<%= form.text_field :email, placeholder: "email@gmail.com", class: "form-control"%>
</div>
<div class="mb-3">
<%= form.label :username, class: "form-label"%>
<%= form.text_field :username, placeholder: "username", class: "form-control"%>
</div>
<div class="mb-3">
<%= form.label :password, class: "form-label"%>
<%= form.password_field :password, placeholder: "password", class: "form-control"%>
<div class="mb-3">
<%= form.label :password_confirmation, class: "form-label"%>
<%= form.password_field :password_confirmation, placeholder: "password", class: "form-control"%>
</div>
<div class="mb-3">
<%= form.submit "Sign Up", class: 'btn btn-primary'%>
</div>
<% end %>
但是,当我提交有错误的表单时,似乎我在控制台中收到了错误消息,但无法在模板中呈现。以下是我收到的错误:
Password can't be blank
Email can't be blank
Email invalid email address
Username can't be blank
我的代码可能有什么问题。
2条答案
按热度按时间vcirk6k61#
在您的表单中,请尝试以下操作
uz75evzq2#
我使用的是rails版本
7.*
,所以我设法通过将SignupController
中的create
方法更改为:这是根据我在评论中从
Alex
那里得到的建议,以及我发现here的讨论。