Я пытаюсь установить связь с пользовательским действием маршрута контроллера, и я делаю что-то не так. У меня есть модель документа, которая обрабатывает загрузку документов в мое приложение CRUD. Я хочу, чтобы пользователи могли что-то «удалять», но на самом деле не удалять это из системы, а вместо этого обновлять столбец «активный» на false. Затем, если кто-то с правами администратора может выполнить полное удаление. Этот процесс необходим, потому что приложение проверяется, и мы не хотим случайно удалять загруженные файлы.
Я не могу заставить работать действие по обновлению (удалить). Когда я граблю маршруты, я вижу:
remove_documents PUT /documents/remove(.:format) document#remove
В моем файле маршрутов (я сделаю пару похожих маршрутов, которые я хочу добавить позже, поэтому я использовал коллекцию таким образом):
resources :documents do
collection do
put "remove", to: "document#remove", as: :remove
end
end
В индексном представлении документов:
<%= link_to remove_documents_url(document), :method => :put do %>
<span class="fa fa-trash text-danger"></span>
<% end %>
Мой контроллер:
def remove
@document = Document.find(params[:id])
@document.active = false
@document.save
html { redirect_to(:back, :notice => 'Document was successfully removed.')}
end
Ссылка работает, но тогда я получаю следующую ошибку:
NameError at /documents/remove.75 uninitialized constant DocumentController
raise unless e.missing_name? qualified_name_for(parent, const_name)
end
end
name_error = NameError.new("uninitialized constant #{qualified_name}", const_name)
name_error.set_backtrace(caller.reject {|l| l.starts_with? __FILE__ })
raise name_error
end
# Remove the constants that have been autoloaded, and those that have been
# marked for unloading. Before each constant is removed a callback is sent