如何让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 %> 
+0

你已经有了大部分的答案,也许你只需要在你的'flavors'控制器中添加一个新的动作,就像'def recover'一样,在这个动作中,只需要执行'@ flavor.recover'。您还需要为该新操作添加新的成员路由,并且在该操作中需要加载'@ flavor'。然后,只需在'link_to'中使用添加的路线。 – fanta

+0

@fanta您是否愿意回答更多细节,就像我刚才所说的那样,但它返回FlavorsController#中的ActiveRecord :: RecordNotFound错误#恢复找不到'id'= 1的味道[WHERE“flavors”。“ deleted_at“IS NULL”' –

+0

听起来就像您在查询中缺少'with_deleted'范围。像'Flavor.with_deleted.find(params [:id])''。 – messanjah

感谢芬达的评论,我能找到答案......

1添加成员到我的路线

resources :flavors 
    collection do 
     get 'inactive' 
    end 
    member do 
     get 'recover' 
    end 
    end 

然后在我的inactive_index。 html.erb我在下面添加了链接

<%= link_to recover_flavor_path(flavor) %>