2014-10-16 36 views
2

我一直在努力解決這個問題。Rails在不同的控制器中訪問Model的錯誤的正確語法

所以在鐵軌我有一個家控制器,它看起來像這樣

def index 
    @contact = Contact.new if !defined? @contact #automatically create a contact variable 
    end 

在我使用的form_for(@contact)索引操作指數軌助手方法 - 它會自動調用contacts_controller的創建方法。從contacts_controller我重新回到家庭控制器的索引行動。以下是我在contacts_controller中創建的內容,旨在澄清事物。

def create 
    @contact = Contact.new(params[:contact]) 

    respond_to do |format| 
     if @contact.save 
      format.html { redirect_to :controller => 'home', :action =>"index", notice: 'Thanks for the Message!' } # 
      format.json { render json: @contact, status: :created, location: @contact } 
     else 
      format.html { redirect_to :controller => 'home', :action =>"index", notice: 'Errors Occurred', errors: @contact.errors.full_messages, anchor: "#contact"} 
      format.json { render json: @contact.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

這是我的問題!如何從home/index訪問@ contact.errors?具體而言,我需要單獨訪問錯誤@ contact.errors [:name],@ contact.errors [:email]等。感謝您提前的幫助!

回答

0

通常在渲染模板處理錯誤的地方完成。

def create 
    @contact = Contact.new(params[:contact]) 

    respond_to do |format| 
     if @contact.save 
      format.html { redirect_to :controller => 'home', :action =>"index", notice: 'Thanks for the Message!' } # 
      format.json { render json: @contact, status: :created, location: @contact } 
     else 
      format.html { render :index } # Instead of redirecting, use render and in your template @contact.errors 
      format.json { render json: @contact.errors, status: :unprocessable_entity } 
     end 
    end 
end 

另外要assing空變量的最佳做法是

@contact ||= Contact.new 
相關問題