Ruby on rails 如何根据在rails上选择的参数url删除数据?

Ruby on rails 如何根据在rails上选择的参数url删除数据?,ruby-on-rails,Ruby On Rails,我有两个rails上的模型,具有以下关联: class Manufacturer has_many :equipments end class Equipments belongs_to :manufacturer end 我有一个带有以下字段的设备显示页面: title, category_id, sub_category_id, manufacturer_id 当我在设备show

我有两个rails上的模型,具有以下关联:

class Manufacturer 
  has_many :equipments
end

class Equipments
  belongs_to :manufacturer
end
我有一个带有以下字段的
设备
显示页面:

title,                     
category_id,               
sub_category_id,           
manufacturer_id  
当我在设备
show
页面上时

我试图给出一个按钮,当点击该按钮时,将根据
url
上的
设备id
获取该页面上的
制造商id
,并将其从
制造商
表的记录中删除。 我知道如何从
制造商
show
页面执行此操作。它将像:

Manufacturer.find(参数[:Manufacturer\u id])


但是,如何在设备展示页面中执行相同操作?

在设备展示页面中:

<%= link_to 'Delete', delete_manufacturer_equipment_path(@equipment.id), method: :delete, data: { confirm: 'Are you sure?' } %>
沿途

 resources :equipments do
   member do
     delete :delete_manufacturer
   end
 end

在设备展示页面:

<%= link_to 'Delete', delete_manufacturer_equipment_path(@equipment.id), method: :delete, data: { confirm: 'Are you sure?' } %>
沿途

 resources :equipments do
   member do
     delete :delete_manufacturer
   end
 end

实现这一点的方法有很多。“正确”的方法是在设备显示页面中有一个链接,该链接向
制造商控制器#销毁
操作发出删除请求,并将
@device.manufacturer\u id
作为参数发送。像这样:

<%= link_to 'Delete Manufacturer', manufacturer_path(@equipment.manufacturer_id), method: :delete, data: {confirm: 'Some confirmation message'} %>
然后,在您的
manufacturers\u controller.rb
中:

def destroy:
    @manufacturer = Manufacturer.find(params[:id])
    @manufacturer.destroy
    redirect_to some_place, notice: 'Manufacturer successfully deleted'
end
另外,如果您只有
设备id
,并且希望检索相关的
制造商
,则可以执行以下操作:

@manufacturer = Manufacturer.joins(:equipments).where(equipments: {id: params[:equipment_id]}).first
@manufacturer.destroy if @manufacturer.present?

实现这一点的方法有很多。“正确”的方法是在设备显示页面中有一个链接,该链接向
制造商控制器#销毁
操作发出删除请求,并将
@device.manufacturer\u id
作为参数发送。像这样:

<%= link_to 'Delete Manufacturer', manufacturer_path(@equipment.manufacturer_id), method: :delete, data: {confirm: 'Some confirmation message'} %>
然后,在您的
manufacturers\u controller.rb
中:

def destroy:
    @manufacturer = Manufacturer.find(params[:id])
    @manufacturer.destroy
    redirect_to some_place, notice: 'Manufacturer successfully deleted'
end
另外,如果您只有
设备id
,并且希望检索相关的
制造商
,则可以执行以下操作:

@manufacturer = Manufacturer.joins(:equipments).where(equipments: {id: params[:equipment_id]}).first
@manufacturer.destroy if @manufacturer.present?