2017-02-09 4 views
0

Gibt es eine Möglichkeit in Rails zu löschen und Redirect anders als in der Controller-Destroy-Aktion definiert?Rails - link_to - Aktion löschen - Umleiten zu einer anderen Seite mit einer anderen Controller-Aktion in einem Link_to

Auf der zum Angebot Show habe ich:

<% @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 %> 

Auf der Mieter zeigen Ansicht Ich habe:

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

Auf der Mieter Indexansicht habe ich

<% @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 %> 

Im Einklang Mit meinem Controller werde ich beim Löschen auf die @deal-Show umgeleitet. tenants_controller.rb

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

Was passiert, wenn ich jedes Mal anders umgeleitet werden? Angenommen, ich möchte beim Löschen auf dieser Seite in der Ansicht der Mandantenshow bleiben, anstatt zur Seite "Deal-Show" weitergeleitet zu werden. Alternativ möchte ich zum Mieter-Index-Ansicht usw. weitergeleitet werden.

Muss ich verschiedene Aktionen mit verschiedenen Umleitungen in der Mieter-Controller definieren oder kann ich es innerhalb der Link_to tun?

Nested Routen:

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 

Antwort

0

Es kann nicht durch die link_to erfolgen, da die Aktion in Ihrem aufgerufen werden Regler. Aber man kann natürlich die redirect_ ändern

redirect_to :back 

oder redirect_to @deal what_ever_path

Sie können jederzeit verschiedene Aktionen erstellen oder Sie passieren params mit Ihrem link_to und fügen Sie wie eine Linie, um Ihre aktuelle Controller-Aktion :

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

Beantwortet Ihre Frage?

+0

Vielen Dank ja das ist die Erklärung, die ich gesucht habe. – nicodo