通过插件访问Redmine控制器

我已经在Redmine官方网站上提出了这个问题,但是我没有得到任何答案,也许我会在这里有更多的机会。

我正在开发一个项目,并尝试通过添加一些function来改进Redmine的现有插件 ,以允许用户以简单的forms上传他的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 %> 

我正在调用Redmine源代码中定义的“文档”控制器和add_attachment方法。 当我提交表单时,出现以下错误:

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

如果在Redmine源代码中定义的话,是否可以通过插件调用这些控制器/方法?

如果是的话,也许你可以给一些build议如何configuration我的路线?

看到这里:id => @document
@document是包含nil的variables,但是这应该包含一些id (如1,2或其他)所需的logging检查它在你的控制器,一旦你将解决这个问题确定这个错误将被解决。

使用/app自定义控制器覆盖原有的控制器。 Rails会尝试在/appfind第一个控制器,然后,如果找不到,它会searchgem中的控制器。

在这里你可以检查原来的控制器: https : //github.com/edavis10/redmine/tree/master/app/controllers

validation路由格式rake | rails route rake | rails route

发送预期的参数和正确的命名空间。 如果你已经有了一个@document,你可以使用form_for。

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