3

私は持っている

def destroy 
    Event.find(params[:id]).destroy
    flash[:info] = "Event deleted" 
    redirect_to :back
end

また、2 つの異なるビューからアイテムを削除できます。1 つのビューではアイテムのリストなので:back、同じページを使用してリロードできます。しかし、他の削除は削除するアイテムのビュー上にあるため、それがなくなったらredirect_to別の場所に移動したいと考えています。

私の質問は、メソッドがどこから来ているかredirect_toに応じて、Rails に別のパスを伝えるにはどうすればよいかということです。destroy

試しに、htmlのbodyクラスを元にif文を使ってみたのですが、インスタンス変数がdestroyメソッドに持ち込まれていない(だと思います)がうまくいきませんでした。例えば

def destroy
    if @body_class == 'one page'
        Event.find(params[:id]).destroy
    flash[:info] = "Event deleted" 
        redirect_to :back
    elsif @body_class == 'a different page'
        Event.find(params[:id]).destroy
        flash[:info] = "Event deleted" 
        redirect_to root_path
    end
end
4

1 に答える 1

9

パラメータを破棄リンクで渡します。リンクがリストにある場合は、次のようになります。

<%= link_to 'destroy', event_path(event, :from=>"list"), :method=>:delete %>

オブジェクトページの場合:

 <%= link_to 'destroy', event_path(event), :method=>:delete %>

そしてコントローラーで:

def destroy 
    Event.find(params[:id]).destroy
    flash[:info] = "Event deleted" 
    if params[:from]=='list'
    redirect_to :back
    else
    redirect_to root_url 
end
于 2013-07-08T17:08:44.697 に答える