如何让link_to恢复软删除的物品?
问题描述:
我正在使用Rails 4.2并使用ActsAsParanoid gem软删除数据库中的项目。如何让link_to恢复软删除的物品?
我创建了一个控制器动作指数.only_deleted
对象...
sample_controller.rb
class FlavorsController < ApplicationController
...
def inactive
@flavors = Flavor.only_deleted
render action: :index
end
...
end
我使用的部分_flavor
渲染风味的,我不知道如何让link_to
视图助手恢复这个对象?喜欢的东西...
<%= link_to "Recover", flavor.recover %>
答
感谢芬达的评论,我能找到答案......
1添加成员到我的路线
resources :flavors
collection do
get 'inactive'
end
member do
get 'recover'
end
end
然后在我的inactive_index。 html.erb我在下面添加了链接
<%= link_to recover_flavor_path(flavor) %>
你已经有了大部分的答案,也许你只需要在你的'flavors'控制器中添加一个新的动作,就像'def recover'一样,在这个动作中,只需要执行'@ flavor.recover'。您还需要为该新操作添加新的成员路由,并且在该操作中需要加载'@ flavor'。然后,只需在'link_to'中使用添加的路线。 – fanta
@fanta您是否愿意回答更多细节,就像我刚才所说的那样,但它返回FlavorsController#中的ActiveRecord :: RecordNotFound错误#恢复找不到'id'= 1的味道[WHERE“flavors”。“ deleted_at“IS NULL”' –
听起来就像您在查询中缺少'with_deleted'范围。像'Flavor.with_deleted.find(params [:id])''。 – messanjah