1

我通过连接表设置了多对多关系,其组件类似于 boss_clerks 演示。(我包括了一个人为的例子)。member__available除了关联上的 CheckColumn 之外,一切正常:boolean

在布尔值是模型属性而不是关联属性的网格上,检查列工作正常。但是,当我从关联中指定一个布尔值时,例如member__available,则不会显示检查列。为了让 checkcolumn 工作,我指定xtype手动指定了和其他列配置。然后复选框会从 false 更新为 true,但是一旦 true 不会响应“取消选中”,就会卡在 true 状态(现在保存在数据库中)。

extjs 4.2.0.663
netzke-core 0.9.0
netzke-basepack 0.9.0
rails 3.2.11

谢谢!

class Member
  has_many :teams, :through => :team_members
  attr_acessible :available
end

class Team 
  has_many :members, :through => :team_mebers
end

class TeamMember
  belongs_to :team
  belongs_to :member
  attr_acessible :role
end

class TeamGrid 
    def configure(c)
        c.model = "Team"
    end
end

class TeamMemberGrid
    def configure(c)
        c.model = "TeamMember"
        c.columns = [
            :member__name,
            :member__specialty,
            { name: :member__available, editor: { xtype: :checkbox}, xtype: :checkcolumn, attr_type: :boolean },
            :role
        ]
    end
end
4

1 回答 1

0

这应该很容易使用虚拟属性解决,例如:

class TeamMember
  delegate :available, to: :member, allow_nil: true

  def available=(v)
    member && member.update_attribute(:available, v)
  end
end


class TeamMemberGrid
  def configure(c)
    c.model = "TeamMember"
    c.columns = [
      :member__name,
      :member__specialty,
      { name: :available, attr_type: :boolean, read_only: false },
      :role
    ]
  end
end

Netzke 默认将虚拟属性设为只读,这就是您需要read_only: false.

于 2015-03-26T09:55:38.497 回答