【问题标题】:Rails 4 Validate nested createRails 4验证嵌套创建
【发布时间】:2016-12-01 21:54:39
【问题描述】:

我有一个嵌套表单:

= 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 无效的同时保留嵌套创建?

【问题讨论】:

    标签: ruby-on-rails forms validation


    【解决方案1】:

    像这样添加一个救援块:

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

    这将显示此消息,而不是抛出任何错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多