【发布时间】: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