2016-09-25 7 views
1

Я использую Rails 4.2, а также используя камень ActsAsParanoid для мягкого удаления элементов из базы данных.Как создать link_to восстановить мягкие удаленные элементы?

Я создал действие контроллера для индексирования .only_deleted объектов ...

sample_controller.rb

class FlavorsController < ApplicationController 
    ... 
    def inactive 
     @flavors = Flavor.only_deleted 
     render action: :index 
    end 
    ... 
    end 

Я использую частичную _flavor для визуализации Flavor-х, И мне интересно как сделать link_to просмотреть помощников для восстановления этого объекта? Что-то вроде ...

<%= link_to "Recover", flavor.recover %> 
+0

у вас уже есть большая часть вашего ответа. Возможно, вам нужно добавить новое действие к вашему контроллеру 'flavors', что-то вроде' def recover', и в этом действии просто '@ flavor.recover'. Вам также нужно будет добавить новый маршрут участника для этого нового действия, и в этом действии вам нужно будет загрузить «@ flavor». Затем просто используйте добавленный маршрут в свой 'link_to'. – fanta

+0

@fanta, пожалуйста, ответьте более подробно, как я сделал, как вы сказали, но он возвращает ошибку 'ActiveRecord :: RecordNotFound в FlavorsController # recover. Не удалось найти Flavor с 'id' = 1 [WHERE" flavors "." deleted_at "IS NULL]' –

+0

Похоже, что в вашем запросе отсутствует область 'with_deleted'. Как 'Flavor.with_deleted.find (params [: id])'. – messanjah

ответ

0

Благодаря комментарий Fanta, я мог бы найти ответ ...

1-й член добавить к моим маршрутам

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

Тогда в моей inactive_index. html.erb Я добавил ссылку ниже

<%= link_to recover_flavor_path(flavor) %>