【问题标题】:Rails - link_to - delete action - how to redirect to another page using another controller action inside a link_toRails - link_to - 删除操作 - 如何使用 link_to 中的另一个控制器操作重定向到另一个页面
【发布时间】:2017-02-09 19:53:22
【问题描述】:

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 节目。 租户控制器.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

租户.rb

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

【问题讨论】:

    标签: ruby-on-rails redirect link-to


    【解决方案1】:

    link_to 无法做到这一点,因为该操作将在您的控制器中调用。但是你当然可以把redirect_改成@deal到

    redirect_to :back 
    

    或 重定向到what_ever_path

    您始终可以创建不同的操作,或者使用 link_to 传递参数并在当前控制器操作中添加一行,例如:

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

    回答你的问题?

    【讨论】:

    • 非常感谢,是的,这就是我正在寻找的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多