【问题标题】:Display duplicate record when uniquenss validation fails?唯一性验证失败时显示重复记录?
【发布时间】:2012-12-01 20:27:09
【问题描述】:

当我的 Rails 唯一性验证失败时,我想在用户返回时在表单视图中使用部分显示重复记录。

我该如何做到这一点?现在我只知道如何更改显示的错误消息。

【问题讨论】:

  • 请发布您的代码和价格

标签: ruby-on-rails


【解决方案1】:

Rails 中没有内置的方法可以做到这一点,并且可能有十几种方法可以做到这一点。这是一种方法,虽然不优雅,但应该可以满足您的需求。

1) 检查是否存在唯一性验证错误。不幸的是,没有一种简单的方法可以做到这一点,因此您必须检查控制器中的错误名称。如果有错误,则搜索现有记录,并将其存储在实例变量中:

def create
  @new_model = Model.new(params[:model])

  if @new_model.save
    # success...
  else
    if @new_model.errors[:field].index("has already been taken")
      @existing_record = Model.where(field: model.field).first
    end

    render :new
  end
end

2) 在视图中呈现现有记录的一部分

<%= render partial: 'partial_name', locals: {existing_record: @existing_record} %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2021-02-25
    • 1970-01-01
    • 2014-07-21
    • 2019-05-02
    相关资源
    最近更新 更多