Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 重新挖掘添加自定义选择框_Ruby On Rails 4_Quickbooks Online_Redmine Plugins - Fatal编程技术网

Ruby on rails 4 重新挖掘添加自定义选择框

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 类更新问题

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

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

我还添加了一个迁移,为qbo_联系人添加了一个问题参考

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
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_属性。。。