Ruby on rails 如何使错误消息窗体仅在生成实际错误消息时显示
我正在学习RailsSpace教程。始终显示我的错误表单。它总是开着!我不知道如何让它消失。我知道使用@user.errors.clear实际上会清除消息。我尝试在视图中使用它,但根本不会显示任何错误消息。我感谢你的帮助 以下是错误表单代码:Ruby on rails 如何使错误消息窗体仅在生成实际错误消息时显示,ruby-on-rails,Ruby On Rails,我正在学习RailsSpace教程。始终显示我的错误表单。它总是开着!我不知道如何让它消失。我知道使用@user.errors.clear实际上会清除消息。我尝试在视图中使用它,但根本不会显示任何错误消息。我感谢你的帮助 以下是错误表单代码: <% if @user.errors.any? %> <div id="errorExplanation"> <h2>Please fix the following <%= pluralize(@user.e
<% if @user.errors.any? %>
<div id="errorExplanation">
<h2>Please fix the following <%= pluralize(@user.errors.count, "error") %>:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
请修复以下问题:
这是我的控制器:
class UserController < ApplicationController
def index
@title = "NubeMart Hub!"
end
def register
@user = User.new
@title = "Register"
if request.post?
@user = User.create(ad_params)
end
if @user.save
flash[:notice]="User #{@user.screen_name} created!"
redirect_to :action=>"index"
end
end
def ad_params
params.require(:user).permit(:screen_name, :email, :password)
end
end
class UserController“index”
终止
终止
def ad_参数
参数require(:user).permit(:屏幕名称,:电子邮件,:密码)
终止
终止
以下是我的观点:
<h2>Register</h2>
<%= form_for :user do |form| %>
<%= render "shared/form_errors", :user => @user %>
<fieldset>
<legend>Enter Your Details</legend>
<div class="form_row">
<label for="screen_name">Screen name:</label>
<%= form.text_field :screen_name,
:size => User::SCREEN_NAME_SIZE,
:maxlength => User::SCREEN_NAME_MAX_LENGTH %>
</div>
<div class="form_row">
<label for="email">Email:</label>
<%= form.text_field :email,
:size => User::EMAIL_SIZE,
:maxlength => User::EMAIL_MAX_LENGTH %>
</div>
<div class="form_row">
<label for="password">Password:</label>
<%= form.password_field :password,
:size => User::PASSWORD_SIZE,
:maxlength => User::PASSWORD_MAX_LENGTH %>
</div>
<div class="form_row">
<%= submit_tag "Register!", :class => "submit" %>
</div>
</fieldset>
<% end %>
寄存器
@用户%>
输入您的详细信息
屏幕名称:
用户::屏幕名称大小,
:maxlength=>User::SCREEN\u NAME\u MAX\u LENGTH%>
电邮:
用户::电子邮件大小,
:maxlength=>User::EMAIL\u MAX\u LENGTH%>
密码:
用户::密码大小,
:maxlength=>User::PASSWORD\u MAX\u LENGTH%>
“提交”%>
您的注册方法错误:
def register
@user = User.new
@title = "Register"
if request.post?
@user = User.create(ad_params)
end
if @user.save # <== This block should be moved!
flash[:notice]="User #{@user.screen_name} created!"
redirect_to :action=>"index"
end
end
def register
@title = "Register"
if request.post?
@user = User.new(ad_params) # I have changed create to new
if @user.save # here your user will be saved(inly in case of post request)
flash[:notice]="User #{@user.screen_name} created!"
end
else
@user = User.new # (this is when request is not post)
end
redirect_to :action=>"index"
end