Redmine添加自定义选择框

时间:2016-01-01 16:15:53

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

我已经开始使用redmine的插件,这将允许我为一个问题分配Quickbooks Online(QBO)联系人。

我为联系人创建了一个表,该表只存储每个qbo联系人的名称。

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

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

我遇到的问题是,在编辑问题时,用户可以选择QBO联系人。当用户保存问题时,不会更新Issues.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

分享了我的工作

1 个答案:

答案 0 :(得分:1)

问题在于,问题允许存在白/黑属性列表。

原来这是一个记录在案here

的问题
  

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

     

Issue.safe_attributes'foo','bar'

     

或使安全属性成为条件:

     

Issue.safe_attributes'foo','bar',:if =&gt; lambda {| issue,user |   issue.author == user}

     

您可以查看redmine / safe_attributes.rb。

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

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