2016-07-27 84 views
0

我有一個嵌套的表格:軌道4驗證嵌套創建

= form_for @class4, url: {action: "create"} do |f| 
= render 'shared/error_messages' 
    .form-group 
    = f.label :description 
    = f.text_field :description 

    = f.fields_for :class3 do |builder| 
    = render :partial => '/shared/class3', :locals => {:f => builder} 
    = submit_tag("submit") 
    = link_to 'clear' 

有部分錯誤

<% if @instance.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-danger"> 
    The form contains <%= pluralize(instance.errors.count, "error") %>. 
    </div> 
    <ul> 
     <% instance.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
    </ul> 
    </div> 

<% end %> 

,並在我的控制器下面的代碼:

current_user 
     .class1.find(params [:"id"]) 
     .class2.where(id: params [:"id2"]) 
      .first_or_create! 
     .class3.where(id: params[:"id3"]) 
      .first_or_create! 
      .class4.create!(params[:"...."]) 

的問題是,當params [:「id」]不是有效的Class1記錄ID時,我得到了一個ActiveRecord :: RecordNotFound錯誤,這很明顯,但是,我會想顯示錯誤給用戶,就像任何其他形式的驗證錯誤,例如:

PARAMS [「ID」]是不是一個有效的Class1記錄

我如何才能讓嵌套創建時通知用戶他們選擇的ID是無效的?

回答

0

它加入救援塊這樣的:

.class1.find(params [:"id"]) rescue "params["ID"] is not a valid Class1 record" 

這將顯示此消息,而不是拋出任何錯誤。