ruby-on-rails - rails form:如果已经有这个孩子,不要在表单中显示孩子
问题描述
人.rb:
class Person < ApplicationRecord
has_many :skills
end
技能.rb:
class Skill < ApplicationRecord
belongs_to :person
validates_uniqueness_of :name, :scope => :person_id
end
我制作了嵌套在 Routes.rb 中的技能:
resources :people do
resources :skills
end
end
现在,在为客户创建新技能时,clients/1/skills/new
我不希望能够选择客户已有的技能。怎么做到呢?这是我当前的输入字段:
= f.select :skill_id, Skill.all.map{|c| [c.name, c.id]}, {include_blank: true}
解决方案
在人.rb
def available_skills
skills = self.skills.pluck(:name, :id)
Skill.pluck(:name, :id).select{|s| !skills.include?(s)}
end
在视图模板中:
<%= f.select :skill_id, @person.available_skills, {include_blank: true} %>
推荐阅读
- post - 如何通过发布请求发送大量参数
- python - 使用 pandas 提取嵌套 json 的标题
- git - Git 功能分支从开发问题合并到暂存
- single-sign-on - 作为 SSO 解决方案的 CAS 与 Okta 与 Keycloak 的比较
- python - python raspberry pi桌面应用程序中框架/面板内的视频播放器
- xamarin - 有没有办法使用渲染器更改 Xamarin 中 iOS 开关的轮廓颜色?
- python - 预测逻辑回归时出错
- mongodb - $dateFromString 无法识别的参数:onError MongoDB 3.6
- python - 解析txt文件以查找单词出现python
- python - Python GTK 更新标签