如果可用的选项不包含此值,我需要能够向collection_select添加一个新值,但是,该值需要是在不同模型中创建的新记录。
我有一个任务模型,其中一个可以创建新任务,每个任务都有一个负责完成任务的人员:
class Task < ApplicationRecord
belongs_to :project
belongs_to :person
belongs_to :user
end
Person模型如下:
class Person < ApplicationRecord
belongs_to :company
has_many :tasks
belongs_to :user
end
在我的任务视图中,我具有用于使用collection_select选择负责任务的人员的代码:
<%= f.collection_select :person_id , current_user.people.order(:last_name), :id, :last_name, {prompt: "Select a person"}, {class: "form-control"} %>
假设在我的collection_select中,我有1)John和2)Peter,但是我需要为Jane分配任务,此刻,我需要离开Task表单并转到Person表单,将Jane添加为新的人员,然后返回并创建新的任务记录。
我想做的事使其更易于使用。我希望我可以在collection_select下拉列表中添加一个选项(例如“ Add new person”),该选项在被选中时会使用一些AJAX或其他魔法将我直接带到新的人形(作为弹出屏幕或嵌套表单),并且一旦我将Jane添加为新记录,它就会回到任务表。
这可能吗?