【问题标题】:Redmine Adding Custom Selection BoxRedmine 添加自定义选择框
【发布时间】:2016-01-01 16:15:53
【问题描述】:

我已经开始为 redmine 开发一个插件,它允许我为问题分配 Quickbooks Online (QBO) 联系人。

我已经为联系人创建了一个表,其中只存储了每个 qbo 联系人的姓名。

我还添加了迁移以将 qbo_contact 的引用添加到问题

class UpdateIssues < ActiveRecord::Migration
  def change
    add_reference :issues, :qbo_customer, index: true
  end
end

我遇到的问题是,在编辑问题时,用户可以选择 QBO 联系人。当用户保存问题时,Issue.qbo_contact_id 不会更新。

我觉得可能和表单选择框有关

请指教

class QboHookListener < Redmine::Hook::ViewListener

  # Edit Issue Form
  # Show a dropdown for quickbooks contacts
  def view_issues_form_details_bottom(context={})
    selected = ""

    # Check to see if there is a quickbooks user attached to the issue
    if not context[:issue].qbo_customer_id.nil? then
      selected = QboCustomers.find_by_id(context[:issue].qbo_customer_id).name
    end

    # Generate the drop down list of quickbooks contacts
    select = context[:form].select :qbo_customer_id, QboCustomers.all.pluck(:name, :id), include_blank: true, selected: selected
    return "<p>#{select}</p>"

    #TODO save selection to Issues.qbp_customer_id
  end
end

如果你需要更多,我已经在github分享了我的工作

【问题讨论】:

  • 原因可能在属性的白/黑名单中。 Redmine 有自己的逻辑(safe_attributes)来定义允许更改哪些属性(如 Rails 核心中的attr_accessible)。看this code(Redmine 3-2 stable),Redmine核心在这里定义了允许的属性。我想您应该将您的属性 (qbo_customer_id) 添加到此列表中。当然你应该在你的插件中而不是在原始模型issue中这样做。
  • 这正是问题所在。谢谢!现在我只需要弄清楚如何通过我的插件将 safe_attribute 添加到模型中......

标签: ruby-on-rails-4 quickbooks-online redmine-plugins


【解决方案1】:

问题是问题允许的属性的白/黑列表。

原来这是一个记录在here的问题

在 r4491 中修复。您现在可以为给定模型扩展安全属性 使用:

Issue.safe_attributes 'foo', 'bar'

或使安全属性成为条件:

Issue.safe_attributes 'foo', 'bar', :if => lambda {|issue, user| issue.author == 用户}

您可以查看 redmine/safe_attributes.rb。

我只是将以下内容添加到 init.rb 以允许我的插件将 qbo_customer_id 添加到安全属性列表中。

# Add qbo_customer to the safe Issue Attributes list
Issue.safe_attributes 'qbo_customer_id'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2020-10-17
    • 2011-12-04
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多