2012-12-01 68 views

回答

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} %>