0

Rails 3.2 を使用しています。アプリには次のものがあります。

  # application_controller.rb
  def store_location
    session[:return_to] = request.url
  end

  def store_referrer_location
    session[:return_to] = request.referrer
  end

  # user_sessions_controller.rb
  def destroy
    store_referrer_location if session[:return_to].blank?
    current_user_session.destroy
    flash[:success] = "Logout successful!"
    redirect_back_or_default root_url
  end

にいる場合は、[ログアウト]を/places/2/editクリックします。session[:return_to]/places/2/edit/places/2/edit/login

request.urlorがアクションrequest.referrerからのものであるかどうかを検出するにはどうすればよいですか?edit/places/2

editID の後の単語を確認するために Regex を使用することを考えていますが、よりクリーンな方法があるかもしれません。

4

1 に答える 1

1

request.referrer でそのようなことを確認できるようにする必要がある場合は、正規表現が適切なオプションになる可能性があります。

request.url.gsub(/\/edit$/,'')

しかし、実際に編集アクションから来ている場合は、編集アクションで store_location を呼び出す必要があるため、session[:return_to] を空白にしないでください。

このような場合、request.referrer を確認する必要はありません。また、Bigxiang が提案したように、編集アクション中に show パスのみを保存するように store_location メソッドを変更することもできます。

# application_controller.rb
def store_location
  session[:return_to] = action_name == 'edit' ? url_for(action:'show') : request.url 
end
于 2013-08-25T12:24:41.453 に答える