【问题标题】:Accessing Non-Related Form Object Params访问不相关的表单对象参数
【发布时间】:2016-08-21 19:51:51
【问题描述】:

我可以在数据库中没有关联字段或模型中没有参数的隐藏表单字段中使用改革将数据发布到表单对象吗?

不使用改革(表单对象)时,我可以将数据很好地传递给控制器​​。但是当我尝试使用改革时,我似乎无法访问它。

例如,:name 使用改革将是一件非常简单的事情;

<%= f.input :name, placeholder: 'Name' %>

但我需要传入一个可以运行验证的 ID 列表;

<%= hidden_field_tag :current_case_worker_ids, @case_workers.pluck(:id) %>

真的没有:current_case_worker_ids。这在我的数据库中不存在(与 :name 不同)。

在改革之前,我使用example[current_case_worker_ids] 来访问数据。

表单对象;

class CaseWorkersForm < ApplicationForm
  property :case_worker_ids
  property :current_case_worker_ids, virtual: true

  def case_worker_ids=(case_worker_ids)
    binding.pry

所以我希望能够通过binding.pry 访问:current_case_worker_ids

【问题讨论】:

  • 你能发布你的表单对象吗?
  • 是的,它发布得很好。或者你的意思是我的代码?我马上更新
  • 所以在你发布的代码中有明显的错字,你有case_worker_ids=方法和属性被称为current_case_worker_ids
  • 这不是错字。我还有 case_worker_ids 是复选框的集合。

标签: ruby-on-rails reform


【解决方案1】:

这很可能是由属性的字母顺序引起的。 case_worker_ids 设置在current_case_worker_ids 之前,因此当您尝试在case_worker_ids= 方法中访问它时,它尚未设置。您应该寻找其他解决方案。

【讨论】:

  • 我尝试将 a_ 放在 current_case_worker_ids 前面。似乎没有什么不同。这可能是一个大规模分配的事情吗? (即使 current_case_worker_ids)与数据库中的字段无关!
  • 尝试将 puts 语句添加到 current_case_worker_ids=case_worker_ids=。您将看到调用这些方法的顺序是什么。
  • 嗯.. a_current_case_workers_ids= 甚至没有在终端中出现 puts 语句
猜你喜欢
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多