rails3 html5 jquery动态添加嵌套表单,演示者模式?

时间:2010-09-28 07:12:42

标签: jquery html5 ruby-on-rails-3 nested-forms mvp

Job有很多任务,任务有很多注意事项

这样的表格怎么样?使用partials,我可以从/ jobs / new输入整个作业,并从/ jobs / 2 / tasks / new添加新任务,可以从那里添加注释,当然还有从/ jobs / 2添加新注释的可能性/ tasks / 5 / notes / new?

这是使用演示者模式的好地方吗?是的,我应该使用哪个库? 我在github上尝试过active_presenter的rails3分支,但是我遇到了部分形式的麻烦。

有人为这样的任务做好榜样吗?

有很多演示者教程,嵌套表格教程和不引人注目的javascript教程,但不仅有一个已经一起解释过。

如果有人使用html5和rails3示例粘贴教程会很好。

1 个答案:

答案 0 :(得分:0)

实际上,Presenter模式不一定是最合适的。

使用accepts_nested_attributes_for

,您可能会更进一步
# Models
class Job < ActiveRecord::Base
  has_many :tasks, :autosave => true
  accepts_nested_attributes_for :tasks
end

class Task < ActiveRecord::Base
  belongs_to :job
  has_many :notes, :autosave => true
  accepts_nested_attributes_for :notes
end

class Note < ActiveRecord::Base
  belongs_to :task
end

然后在你的表单中做一些像(在HAML中):

= form_for @job do |job|
  = job.text_field :name # or whatever your Job attributes are
  = job.fields_for :tasks do |task|
    = task.text_field :name
    = task.check_box_field :complete
    = task.fields_for :notes do |note|
      = note.text_field :body
  = job.submit "Create Job"

您可能必须实际初始化新作业的某些任务/注释,否则相关的记录表单可能不会显示。例如,执行3.times { @job.tasks.build }之类的操作来创建3个空白任务(因此显示任务子表单3次)。