【问题标题】:Multiple table associated Form in Ruby on RailsRuby on Rails 中的多表关联表单
【发布时间】:2012-07-24 03:34:39
【问题描述】:

目前我被我的 ruby​​ on rails 项目困住了。我正在使用 Rails 3.2

我设法为人类表单中的技能创建复选框,但我不知道如何创建可以更改 human_skills 表中“for_work”布尔值的表单输入。

所以我的目标是当用户创建一个新人或编辑一个人时,他们可以选择技能并确定这些技能是否适用于工作(布尔值)。

提前非常感谢!

Here is my Human form code

    = semantic_form_for @human do |f|
    = f.input :name 
    = f.input :skills , :as => :check_boxes,

数据库设计

技能 - id、姓名

human_skills - id、skills_id、human_id、for_work

人类 - id、名字

这是我的型号代码:

class Human < ActiveRecord::Base
  has_many :human_skills;
  has_many :skills, :through => :human_skills

class HumanSkill< ActiveRecord::Base
    belongs_to :human_skills;
    belongs_to :human;

class Skill < ActiveRecord::Base
  has_many :human_skills;
  has_many :human, :through => :human_skills

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    好的,所以你需要稍微调整你的模型以允许人类创造技能,然后使用 fields_for 让 form_for 助手知道它在另一个模型上。

    class Human < ActiveRecord::Base
      has_many :human_skills;
      has_many :skills, :through => :human_skills
    
      accepts_nested_attributes_for :skills
    
    class HumanSkill< ActiveRecord::Base
        belongs_to :human_skills;
        belongs_to :human;
    
    class Skill < ActiveRecord::Base
      has_many :human_skills;
      has_many :human, :through => :human_skills
    

    和形式

     = semantic_form_for @human do |f|
        = f.input :name 
        = fields_for @human.skills do |h_skills|
          = h_skills.checkbox :skills 
    

    查看资源以回答您的问题:接受嵌套属性 = Accepts_nested_attributes_forFields 对于文档:Fields_for 嵌套表单视频Railscast

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多