ベースを。
#objects_controller.rb
def new
@object = Object.new
@stale_form_check = Time.now.to_i
end
def create
@object = Object.new(object_params)
#function defined in application_controller.rb
redirect_to_on_back_and_create(@object)
end
#application_controller.rb
private
def redirect_to_on_back_and_create(object)
if session[:last_stale].present? and session[:last_stale_id].present? and session[:last_stale].to_i == params[:stale_form_check].to_i
redirect_to edit_polymorphic_path(object.class.find(session[:last_stale_id].to_i)), alert: "Este #{object.model_name.human} ya ha sido creado, puedes editarlo a continuación"
else
if object.save
session[:last_stale] = params[:stale_form_check].to_i
session[:last_stale_id] = object.id
redirect_to object, notice: "#{object.model_name.human} Creado con éxito"
else
render :new
end
end
end
そして最後には、フォームに@stale_form_checkのPARAMを追加
<%= hidden_field_tag :stale_form_check, @stale_form_check %>
あなたは常にあなたがそれを必要とする、このメソッドを抽象化できますが、この方法であなたは可能性が多くの部分でこの振る舞いが必要な場合は、プロジェクトの繰り返しを避けてください。
私はredirect_on_back gemを使用していましたが、次回の使用には役立ちますが、今回は私のためには機能しませんでした。この宝石が使用する_usecパラメータは常にリセットされていました。それは必要でした
提出されるデータは何ですか?私たちが掴むことができるユニークな識別子がありますか? –
私は一般的な解決策について考えているので、どんな種類のデータでも動作するはずです。そして、ユニークでなければならない価値がないならば、それはまた働くべきです。 –