当我的Rails唯一性验证失败时,我想在用户被发回时使用表单视图中的partial显示重复记录。
我如何做到这一点?现在我只知道如何更改显示的错误消息。
答案 0 :(得分: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} %>