通过插件访问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会尝试在/app
find第一个控制器,然后,如果找不到,它会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 %> `