2017-02-09 5 views
0

コントローラの削除アクションで定義されたものとは違って、削除してリダイレクトする方法はありますか?Rails - link_to - deleteアクション - link_to内の別のコントローラアクションを使用して別のページへリダイレクトする方法

私が持っている取引ショービューで

:私はラインで

<% @deal.tenants.each do |tenant| %> 
    <li>Tenant id #<%= tenant.id %> - <%= link_to tenant.last_name, [@deal, tenant] %></li> 
    <li><%= link_to "Delete Tenant", deal_tenant_path(tenant.deal, tenant), method: :delete, data: { confirm: "Are you sure you want to delete this tenant?"} %></li> 
<% end %> 

を持っているテナントインデックスビューで

<li><%= link_to "Delete Tenant", [@deal, @tenant], method: :delete, 
data: { confirm: "Are you sure you want to delete this tenant?"}, 
class: "delete" %></li> 

:私が持っているテナントショービューで

<% @deal.tenants.each do |guy| %> 
    <li>Tenant id #<%= guy.id %> - <%= link_to guy.last_name, deal_tenant_path(@deal, guy) %> 
    <%= link_to "delete", deal_tenant_path(@deal, guy), method: :delete, data: { confirm: "Are you sure you want to delete this tenant?"} %></li> 
<% end %> 

私のコントローラでは、削除するときに@dealショーにリダイレクトされます。 tenants_controller.rb

def destroy 
    @tenant.destroy 
    flash[:notice] = "Tenant has been deleted." 
    redirect_to @deal 
end 

私はそれぞれ異なる時間にリダイレクトされるようにしたい場合は?たとえば、テナントショービューにリダイレクトするのではなく、そのページで削除するときにテナントショービューに滞在したいとします。代わりに、私はテナントのインデックスビューなどにリダイレクトしたいと思います。

テナントコントローラで異なるリダイレクトを使用して異なるアクションを定義する必要がありますか、それともlink_to内で行うことはできますか?

ネストされたルート:

resources :deals, only: [:index, :show, :create, :update, :destroy] do 
    scope '/siteadmin' do 
    resources :tenants 
    end 
end 

scope '/siteadmin' do 
    resources :deals, except: [:index, :show] 
end 

Deal.rb

class Deal < ApplicationRecord 
    has_many :tenants, dependent: :destroy 
end 

Tenant.rb

class Tenant < ApplicationRecord 
    belongs_to :deal 
    validates :deal_id, :first_name, :last_name, :age, presence: true 
end 

答えて

0

アクションがあなたに呼び出されますので、それはLINK_TOによって行うことができませんコントローラ。しかし、あなたはもちろん、あなたは常に異なるアクションを作成することができたり、あなたのlink_toでのparamsを渡すなど、現在のコントローラのアクションに行を追加しwhat_ever_path

redirect_to :back 

または redirect_toに@dealするREDIRECT_を変更することができます:

if params[:tenant] 
redirect_to :back 
else 
redirect_to @deal 

質問は回答していますか?

+0

ありがとうございましたこれは私が探していた説明です。 – nicodo

関連する問題