0

Rails の一意性の検証が失敗した場合、ユーザーが送り返されたときに、フォーム ビューでパーシャルを使用して重複レコードを表示したいと考えています。

どうすればこれを達成できますか? 現在、表示されるエラーメッセージを変更する方法しか知りません。

4

1 に答える 1

1

Rails でこれを行う組み込みの方法はなく、おそらく十数通りの方法があります。これは、エレガントではありませんが、必要なものを取得するための1つのアプローチです。

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} %>
于 2012-12-01T21:33:59.237 に答える