Ruby on rails 4 重新挖掘添加自定义选择框
我已经开始为redmine开发一个插件,它允许我为一个问题指定一个Quickbooks Online(QBO)联系人 我为联系人创建了一个表,该表仅存储每个qbo联系人的名称 我还添加了一个迁移,为qbo_联系人添加了一个问题参考Ruby on rails 4 重新挖掘添加自定义选择框,ruby-on-rails-4,quickbooks-online,redmine-plugins,Ruby On Rails 4,Quickbooks Online,Redmine Plugins,我已经开始为redmine开发一个插件,它允许我为一个问题指定一个Quickbooks Online(QBO)联系人 我为联系人创建了一个表,该表仅存储每个qbo联系人的名称 我还添加了一个迁移,为qbo_联系人添加了一个问题参考 class UpdateIssues < ActiveRecord::Migration def change add_reference :issues, :qbo_customer, index: true end end 类更新问题
class UpdateIssues < ActiveRecord::Migration
def change
add_reference :issues, :qbo_customer, index: true
end
end
类更新问题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
class-QboHookListener”
#TODO将所选内容保存到Issues.qbp\u customer\u id
结束
结束
如果您需要更多信息,我已经分享了我在上的工作。问题是,存在一个允许问题的属性的白/黑列表 事实证明这是一个记录在案的问题 固定在r4491。现在可以扩展给定模型的安全属性 使用: Issue.safe_属性“foo”、“bar” 或使安全属性有条件: Issue.safe_属性'foo','bar',:if=>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'
原因可能在属性的白/黑列表中。Redmine有自己的逻辑(
safe\u attributes
)来定义允许更改哪些属性(比如Rails核心中的attr\u accessible
)。看看(Redmine 3-2稳定版),Redmine核心在这里定义了允许的属性。我想您应该将属性(qbo\u customer\u id
)添加到此列表中。当然,您应该在您的插件中执行此操作,而不是在原始型号中执行此操作。问题
。这正是问题所在。非常感谢。现在我只需要弄清楚如何通过我的插件向模型添加safe_属性。。。