1

ユーザーの出身地に応じて、削除後にリダイレクトしようとしています。

これは、イベント コントローラーの現在のコードです。

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)

助けてくれてありがとう!!

4

2 に答える 2

5

私がコメントしたように、次のことができます。

def destroy
  @event = Event.find(params[:id])
  @event.destroy
  redirect_url = (request.referer.include?("#{@event.id}/show") ? events_url : :back)

  respond_to do |format|
    format.html { redirect_to redirect_url }
    format.json { head :no_content }
  end
end

@event.id(削除した直後にアクセスできるかどうかはわかりません。そうでない場合は、設定後に破棄しますredirect_url

于 2013-05-03T17:15:13.587 に答える
0

あなたの見解では:

<%= link_to 'Delete', event_path(@event, url), confirm: 'Are you sure?', method: :delete, :class => 'btn btn-danger' %>

urlここでは、変数をパラメーターとしてコントローラーに渡しています。

コントローラーで:

...
@return_url = params[:url]
...

お役に立てれば!

于 2013-05-03T17:07:07.240 に答える