使用其他属性为多对多创建视图

时间:2012-03-21 00:22:47

标签: ruby-on-rails has-many-through formtastic

我在项目和阶段之间有多对多的关系,我正在尝试构建一个表单,允许用户检查项目中的各个阶段并在该阶段发表任何评论。

这大致与模型类似:

class Project < ActiveRecord::Base
  has_many :project_stages
  has_many :stages, :through => :project_stages
end

class Stage < ActiveRecord::Base
  has_many :project_stages
  has_many :projects, :through => :project_stages
end

class ProjectStage < ActiveRecord::Base
  belongs_to :project
  belongs_to :stage
end

我的第一个视图实现只是使用Formtastic来显示每个项目的复选框列表,以允许用户在完成每个阶段时进行检查。

不幸的是,现在每个project_stage的completion_date和completion_comment都会变得稍微复杂一些。

我不确定如何重写视图,以便我可以为每个阶段显示一个复选框,以及该阶段的completion_date和completion_comment字段。

我还认为我需要修复更新方法,以便任何未经检查的ID,该关系被破坏?

我已经浏览了Formtastic doco,以及通常的谷歌搜索,我找不到实现我想要做的事情的模式。

请指出正确方向的任何指示。

提前感谢您提供的任何洗发器。

1 个答案:

答案 0 :(得分:0)

制作多种用户体验(UX)非常棘手。特别是当关系具有自己的属性时(例如,completion_date和completion_comment)。

我建议使用带有Ajax的jQuery表单来创建/更新/删除给定模型实例的关系。

这个railscast显示了如何在多对多关系中添加二进制样式(它是否存在)。但是当关系具有属性时,您需要一种“打开”关系来改变属性的方法。

您还必须决定关系的显示方式。同样,有很多选择。

例如,当用户单击关系名称时,您可以打开jQuery dialog。该对话框将启用更新和删除关系。