Ruby on rails 4 如何从视图中呈现并传递回控制器(Rails)的数据中获取活动记录id

Ruby on rails 4 如何从视图中呈现并传递回控制器(Rails)的数据中获取活动记录id,ruby-on-rails-4,activerecord,view,controller,Ruby On Rails 4,Activerecord,View,Controller,我正在开发一个Rails 4.1.9应用程序,它有三个模型:用户、设备和用户设备。在视图中,有一个each循环来显示属于用户的所有设备的表(我们使用slim而不是erb,因此这是HTML): 我的任务是添加一种在单击删除按钮时删除UserDevice关联的方法,因此我添加了以下代码: 鉴于: td= link_to "Clear device", [:clear_device, :admin, @business, @user], method: :delete, class: 'btn btn

我正在开发一个Rails 4.1.9应用程序,它有三个模型:用户、设备和用户设备。在视图中,有一个each循环来显示属于用户的所有设备的表(我们使用slim而不是erb,因此这是HTML):

我的任务是添加一种在单击删除按钮时删除UserDevice关联的方法,因此我添加了以下代码:

鉴于:

td= link_to "Clear device", [:clear_device, :admin, @business, @user], method: :delete, class: 'btn btn-flat danger' 
在控制器中:

def clear_device
  device = UserDevice.where(user_id: params[:id])
  device.destroy_all

  redirect_to admin_business_user_path
end
我遇到的问题是,当我查询与用户id匹配的设备时,可能会有多个设备,这就是为什么我必须使用destroy\u all,即使我只想销毁一个。我需要的是将表中第一列的id传递回控制器,以便我可以查询设备id和用户id,如下所示:

 def clear_device
   device = UserDevice.where(device_id: (id from view) AND user_id: params[:id])
   device.destroy

   redirect_to admin_business_user_path
 end

我似乎不知道如何将视图中的表中的id返回控制器,有什么建议吗?我知道如果我在表单中使用隐藏字段是可能的,但是如果我没有实际使用表单做任何事情,这似乎不是最佳实践。我也不希望引入任何JavaScript或jQuery,但如果这是唯一的选择,我会这样做

你在正确的轨道上,非常接近。我不知道你的routes.rb是什么样子,但我猜你的routes是如何设置的,假设params[:id]映射到一个用户id。你只需要在“Clear Device”(清除设备)中发送一个额外的参数,其中包括一个设备id。我对slim不太熟悉,因此此语法可能不准确:

td= link_to "Clear device", admin_business_clear_device_path(id: @user.id, device_id: device.id), method: :delete, class: 'btn btn-flat danger
查看路由和路径帮助程序,以确定正确的链接目的地。雇员再培训局的情况如下:

<td><%= link_to "Clear Device", {:controller => :admin, :action => :clear_device, :id => @user.id, :device_id => device.id}, {:method => :delete, :class => 'btn btn-flat danger'} %></td>

希望这能有所帮助。

你走在正确的轨道上,非常接近。我不知道你的routes.rb是什么样子,但我猜你的routes是如何设置的,假设params[:id]映射到一个用户id。你只需要在“Clear Device”(清除设备)中发送一个额外的参数,其中包括一个设备id。我对slim不太熟悉,因此此语法可能不准确:

td= link_to "Clear device", admin_business_clear_device_path(id: @user.id, device_id: device.id), method: :delete, class: 'btn btn-flat danger
查看路由和路径帮助程序,以确定正确的链接目的地。雇员再培训局的情况如下:

<td><%= link_to "Clear Device", {:controller => :admin, :action => :clear_device, :id => @user.id, :device_id => device.id}, {:method => :delete, :class => 'btn btn-flat danger'} %></td>
希望这有帮助