ユーザーの出身地に応じて、削除後にリダイレクトしようとしています。
これは、イベント コントローラーの現在のコードです。
def destroy
@event = Event.find(params[:id])
@event.destroy
respond_to do |format|
format.html { redirect_to events_url }
format.json { head :no_content }
end
end
これを次のように変更しました (MrYoshiji に感謝):
format.html { redirect_to :back }
これは、ユーザーがイベント ショー ページ以外のすべてのページから削除していた場合に機能します。削除したばかりのレコードを表示しようとするとエラーが発生するためです。
そのため、params を使用して、destroy コードにリダイレクト先を伝えようとしています。
私はこれを試しています:
def destroy
@event = Event.find(params[:id])
@event.destroy
@return_url
respond_to do |format|
format.html { redirect_to @return_url }
format.json { head :no_content }
end
end
しかし、ショーページの link_to で @return_url をパラメーターとして渡す方法がわかりません。
<%= link_to 'Delete', @event, params(@return_url => "some url"), confirm: 'Are you sure?', method: :delete, :class => 'btn btn-danger' %>
URLをパラメータとして渡すにはどうすればよいですか?
ありがとう!!
更新1
イベントコントローラーを次のように変更しました。
def destroy
@expense = Expense.find(params[:id])
redirect_url = (request.referer.include?("#{@event.id}/show") ? events_url : :back)
@expense.destroy
respond_to do |format|
format.html { redirect_to redirect_url }
format.json { head :ok }
end
end
これにより、「イベントの削除」ボタンがオンになっている正しいページにリダイレクトされます-イベントの表示ページでそのボタンをクリックした場合を除きます。
リダイレクトは、削除されたレコードを表示したいと考えています。
UDPATE2
これは私のアプリでうまくいきました:
redirect_url = (request.referer.include?("/events/#{@event.id}") ? events_url : :back)
助けてくれてありがとう!!