2017-04-16 113 views
1

new.html是注册表单,它会创建导师帐户。 它涉及错误处理。 _error_messages.html.erb是处理错误的文件,就像填写所有文本字段一样。 例如,示出了: '导轨中缺少模板错误

The form contains 3 errors. 

    Name can't be blank 
    Password confirmation can't be blank 
    Password confirmation doesn't match Password 

然而,当没有在new.html任何输入提交表单,它示出了错误

缺少模板导师/注册,应用/使用{寄存器:区域设置= > [:en],:formats => [:html],:variants => [],:handlers => [:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}。搜索:*“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

<% 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> 

视图/共享/ _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 %> 

导师-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 
+0

用'new'动作显示'辅导员'控制器。 –

+0

@Зелёный'def new \t @tutor = Tutor.new end' – Vito

+0

请将'tutors'控制器_的完整code_发送到问题body_。 –

回答

0

当您提交表单,请求发送给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 

create动作有一个条件if,在一切都很好,@tutor已经保存和Rails呼叫重定向到显示第一案行动,否则Rails试图render注册模板不存在(错误声称它)​​。要解决该问题,请创建register模板,并选择所需的html代码,如果@tutor未保存,则该代码应运行。