【问题标题】:Accessing Redmine controllers through a plugin通过插件访问 Redmine 控制器
【发布时间】:2014-03-07 10:08:06
【问题描述】:

我已经在Redmine官网问过这个问题,但没有得到任何答案,也许我会在这里有更多机会。

我正在处理一个项目,我尝试通过添加一些功能来改进 Redmine 的 existing plugin,以允许用户使用简单的表单将他的 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 源代码中定义了这些控制器/方法,是否可以通过插件调用它们?

如果是,您能否就如何配置我的路线提供一些建议?

【问题讨论】:

  • 您的 @document 实例变量是 nil。你是怎么设置的?
  • 嗯,代码中可能有一些错误,因为我无法尝试。我现在不能准确回答你,让我检查完整的代码。
  • 因为这不是一个真正的答案,我想我只是链接到我不久前写的一个插件,它使用 Dropbox 作为 Redmine 的文件存储后端。 github.com/alexbevi/redmine_dropbox_attachments。没有更多的上下文,提供正确的答案有点困难。如果你在 Github 上有一个分支,你可以指出以便我们测试它可能更容易回答这个问题。
  • 我找到了另一种上传文件的方法,效果很好,但感谢您提供的链接,我一定会看看。
  • 也许控制器是命名空间的,尝试运行rake routes 并查看路由被调用的内容以及它们是否具有命名空间。

标签: ruby-on-rails plugins redmine


【解决方案1】:

见这里:id =&gt; @document
@document 是包含nil 的变量,但是这应该包含一些id(如1,2 或其他)所需的记录检查它在你的控制器中,一旦你会修复此问题确保此错误将得到解决。

【讨论】:

    【解决方案2】:

    验证路由格式 rake | rails route

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多