Подтвердить что ты не робот

Доступ к контроллерам Redmine через плагин

Я уже задал вопрос на официальном сайте Redmine, но ответа у меня не получилось, может быть, у меня будет больше шансов.

Я работаю над проектом, и я пытаюсь улучшить существующий плагин для Redmine, добавив некоторые функции к нему, чтобы позволить пользователю загрузите его файлы Dropbox в документы Redmine с помощью простой формы. Redmine уже имеет такую ​​возможность, поэтому я хотел бы использовать контроллер и методы, уже определенные в исходном коде Redmine.

У меня есть следующий код в одном из моих плагинов:

<% html_title "Reddrop - Sync" %>
<h2>Synchronisation page</h2>
<p>Please choose your file</p>
<%= form_tag({:controller => "documents", :action => "add_attachment", :id => @document},    :multipart => true) do %>
<%= file_field_tag 'attachments[dummy][file]', :id => nil, :multiple => true, :onchange => "addInputFiles(this)" %>
<%= submit_tag(value = "Sync this file with Redmine") %>
<% end %>

Я вызываю контроллер "документы" и метод add_attachment, которые определены в исходном коде Redmine. Когда я отправляю свою форму, я получаю следующую ошибку:

ActionController::RoutingError (No route matches {:controller=>"documents", :action=>"add_attachment", :id=>nil}):

Можно ли вызвать эти контроллеры/методы через плагин, если они определены в исходном коде Redmine?

Если да, возможно, вы могли бы дать несколько советов, как настроить мои маршруты?

4b9b3361

Ответ 1

См. здесь :id => @document
@document - это переменная, содержащая nil, но это должно содержать некоторую id (например, 1,2 или что-то еще) требуемой записи, чтобы проверить ее на вашем контроллере, и как только вы устраните эту проблему, убедитесь, что эта ошибка будет устранена.

Ответ 2

Перезапишите исходные контроллеры с помощью настраиваемых контроллеров в /app. Rails попытается найти сначала контроллер в /app, а затем, если его не найдет, он будет искать контроллер в драгоценных камнях.

Здесь вы можете проверить исходные контроллеры: https://github.com/edavis10/redmine/tree/master/app/controllers

Ответ 3

проверить формат маршрута   rake | rails route

отправить ожидаемые параметры и правильное пространство имен. Если у вас уже есть @document, вы можете использовать form_for.

`<% form_for(@document, url: {action:'add_attachment'} ) do %> `