Rails - link_to - 删除操作 - 如何使用 link_to 中的另一个控制器操作重定向到另一个页面
Rails - link_to - delete action - how to redirect to another page using another controller action inside a link_to
在 Rails 中有什么方法可以不同于控制器销毁操作中定义的删除和重定向吗?
在交易显示视图中我有:
<% @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 %>
在租户展示视图上我有:
<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 |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 %>
根据我的控制器,我在删除时被重定向到@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
link_to 无法完成,因为该操作将在您的控制器中调用。但是您当然可以将 redirect_ 更改为 @deal 为
redirect_to :back
或
redirect_to what_ever_path
您始终可以创建不同的操作,或者您使用 link_to 传递参数并在当前控制器操作中添加一行,例如:
if params[:tenant]
redirect_to :back
else
redirect_to @deal
回答了你的问题?
在 Rails 中有什么方法可以不同于控制器销毁操作中定义的删除和重定向吗?
在交易显示视图中我有:
<% @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 %>
在租户展示视图上我有:
<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 |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 %>
根据我的控制器,我在删除时被重定向到@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
link_to 无法完成,因为该操作将在您的控制器中调用。但是您当然可以将 redirect_ 更改为 @deal 为
redirect_to :back
或 redirect_to what_ever_path
您始终可以创建不同的操作,或者您使用 link_to 传递参数并在当前控制器操作中添加一行,例如:
if params[:tenant]
redirect_to :back
else
redirect_to @deal
回答了你的问题?