[英]Missing template error in rails
new.html
is a registration form ,which creates tutor account . new.html
是一个注册表单,用于创建教师帐户。 It involves error handling . 它涉及错误处理。
_error_messages.html.erb
is the file which handles the error ,like should be filling in all text fields . _error_messages.html.erb
是处理错误的文件,应该填写所有文本字段。 eg , showing : ` 例如,显示:`
The form contains 3 errors.
Name can't be blank
Password confirmation can't be blank
Password confirmation doesn't match Password
However ,when submits the form without any input in new.html
,it shows the error 但是,当在
new.html
没有任何输入的情况下提交表单时,它会显示错误
Missing template tutors/register, application/register with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
缺少模板导师/注册,申请/注册{:locale => [:en],:formats => [:html] ,: variants => [],:handlers => [:erb,:builder,:raw, :ruby,:coffee,:jbuilder]}。 Searched in: * "C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/web-console-2.0.0/lib/action_dispatch/templates" * "D:/Sites/abc/app/views"
搜索范围:*“C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/web-console-2.0.0/lib/action_dispatch/templates”*“D:/ Sites / abc / app /视图”
new.html.erb new.html.erb
<% provide(:title, 'Registeration') %>
<h1>Tutor Registration</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@tutor) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.text_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.label :gender %>
<%= f.select(:gender, ['Male', 'Female'] , class: 'form-control' )%>
<%= f.label :tutor_education_level %>
<%= f.select(:education_level, ['Bachelor', 'Master', 'Doctor'] , class: 'form-control' )%>
<%= f.label :tutor_institution %>
<%= f.text_field :institution, class: 'form-control' %>
<%= f.label :tutorial_experience %>
<%= f.text_field :experience, class: 'form-control' %>
<%= f.label :tutor_preferred_district %>
<%= f.text_field :district, class: 'form-control' %>
<%= f.label :tutor_preferred_subject %>
<%= f.text_field :subject, class: 'form-control' %>
<%= f.label :tutor_required_student_level %>
<%= f.select(:student_level, ['P1-P3', 'P4-P6', 'S1-S3', 'S4-S6'] , class: 'form-control' )%>
<%= f.submit "Create tutor's account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
views/shared/_error_messages.html.erb 视图/共享/ _error_messages.html.erb
<% if @tutor.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(@tutor.errors.count, "error") %>.
</div>
<ul>
<% @tutor.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
Tutor -controller 导师 - 控制器
class TutorsController < ApplicationController
before_action :logged_in_tutor, only: [:edit, :update]
before_action :correct_tutor, only: [:edit, :update]
def index
@tutors = Tutor.all
end
def show
@tutor = Tutor.find(params[:id])
end
def new
@tutor = Tutor.new
end
def create
@tutor = Tutor.new(tutor_params)
if @tutor.save
log_in @tutor
flash[:success] = "Congratulations! Your registration is successful!"
redirect_to @tutor
else
render 'register'
end
end
def edit
@tutor = Tutor.find(params[:id])
end
def update
if @tutor.update_attributes(tutor_params)
flash[:success] = "Profile updated successfuly!"
redirect_to @tutor
else
render 'edit'
end
end
# Handle sign-up failure, to redirect the tutor to the registeration form again
def tutor_params
params.require(:tutor).permit(:name, :email, :password, :password_confirmation, :address,:gender ,:education_level,:institution,:exprience,:district,:subject,:student_level)
end
def logged_in_tutor
unless logged_in?
store_location
flash[:danger] = "Please log in."
redirect_to login_url
end
end
def correct_tutor
@tutor = Tutor.find(params[:id])
redirect_to(root_url) unless current_tutor?(@tutor)
end
end
When you submit the form, request sends to the create
action: 提交表单时,请求发送到
create
操作:
def create
@tutor = Tutor.new(tutor_params)
if @tutor.save
# if @tutor valid save it and redirect to show action
redirect_to @tutor
else
# else render the register template(or action)
render 'register'
end
end
In the create
action there is a conditional if
, in the first case all is good, @tutor
has been saved and Rails call redirect to show action, otherwise Rails trying to render
register template which is not exists(the errors claims about it). 在
create
操作中有一个条件, if
,在第一种情况下一切都很好, @tutor
已经保存,Rails调用重定向显示操作,否则Rails尝试render
不存在的寄存器模板(错误声称它)。 To resolve that issue create register
template with desired html code which should run if @tutor
isn't saved. 要解决该问题,请创建具有所需html代码的
register
模板,如果未保存@tutor
,则应运行该代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.