gpt4 book ai didi

ruby-on-rails - 如何在表单collection_select rails中将多个id作为数组传递?

转载 作者:行者123 更新时间:2023-12-03 14:37:50 26 4
gpt4 key购买 nike

projectstages 有一对多关联和 financialstagetask 有一对多关联tasksub_task 有一对多关联.
财务#form 查看我正在尝试通过 id collection_select 作为组合 id 的数组,例如(例如:阶段的 id,父阶段的 id。任务的 id,stage 的 id。任务的 id。sub_task 的 id。sub_task 的 id)

同样下拉首先访问所有阶段,然后在当前场景中的任务是我如何像第一阶段一样打开下拉,然后是它们对应的所有任务,然后是所有子任务?
enter image description here
代码如何识别哪个值来自哪个表,因为下拉来自基于引用 的多个表
form.html.erb(财务)

<div class="field column large-8">
<br>
<%= form.label :acitivity_Select %>
<%= form.collection_select :cost_head, @project.stages.all+ @project.tasks.all+ @project.sub_tasks.all, :id, :task_name, prompt: true %>
</div>
项目文件
  has_many :stages
has_many :tasks, through: :stages
has_many :sub_tasks, through: :tasks

最佳答案

所以这就是我将如何解决这个问题:
从数据的角度来看,根本不需要获取和呈现阶段和任务,因为您可以通过子任务访问该数据。因此,如果您相应地呈现选择并将子任务的 ID 存储在数据库中,您将能够从中访问任务和阶段:

<%= form.collection_select :cost_head, @project.sub_tasks, :id, :task_name, prompt: true %>
其他任何地方:
financial.cost_head.task # => the task
financial.cost_head.task.stage # => the stage
如果您想在选择中包含 ID 以便于选择,您可以编写自己的 label_method ,例如像这样:
在子任务模型中:
def full_task_name
"#{task.stage.id}.#{task.id}.#{id} #{task_name}"
end
然后在表格中:
<%= form.collection_select :cost_head, @project.sub_tasks, :id, :full_task_name, prompt: true %>
如果排序关闭,您可能需要执行以下操作:
在 Controller 中:
@cost_heads = @project.sub_tasks.includes(task: :stage).order("stages.id ASC, tasks.id ASC, sub_tasks.id ASC")
在形式:
<%= form.collection_select :cost_head, @cost_heads, :id, :full_task_name, prompt: true %>

关于ruby-on-rails - 如何在表单collection_select rails中将多个id作为数组传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com