【问题标题】:Examples? Multiple model nested forms and processing, Rails3+Datamapper例子?多模型嵌套表单及处理,Rails3+Datamapper
【发布时间】:2010-12-22 15:02:36
【问题描述】:

我正在寻找示例,但几乎没有发现什么可以继续,因为一切似乎都倾向于 ActiveRecord。我了解我所见的基本概念,并且我正在使用 Datamapper 进行此操作(更具体的是 dm-accepts_nested_attributes)。更多细节可以在这里找到:nested forms for 2 models in rails using dm-accepts_nested_attributes and dm-is-tree

我有一个包含一些文本和一个图像的帖子的两个模型表单,就是这样。这些模型与具有 n 个图像的帖子和属于帖子的图像相关联。

我已经浏览过很多不同的搜索和博客文章,但没有找到可以查看的项目或示例,而且文档很少。我也是一个学习者/初学者/有点密集。我在这里问有两个原因:解决我当前的问题,以便未来的提问者有一个地方可以查看。

在 Rails 表单中处理多个模型似乎有些复杂且不容易完成,或者确实如此,但我还没有弄清楚。

【问题讨论】:

    标签: ruby-on-rails ruby forms ruby-on-rails-3 datamapper


    【解决方案1】:

    所以,这是我从类似应用程序(Rails 3 + DataMapper + dm-accepts_nested_attributes + Haml)中提取的一些代码。在我的示例中,我有一个医疗实践,它有很多 administrators_practices,并且通过 administrators_practices 有很多管理员。这是模型的相关部分:

    has n, :administrators_practices
    has n, :administrators, :through => :administrators_practices
    accepts_nested_attributes_for :administrators
    

    然后,在我看来,我有这样的事情:

    %h1 Practice Setup
    %ol
      = form_for @practice do |f|
    
        %li
          = f.label :name
          = f.text_field :name
    
        = f.fields_for :administrators do |administrator_builder|
    
          %li
            = administrator_builder.label :name, "Administrators Name"
            = administrator_builder.text_field :name
    
          %li
            = administrator_builder.label :email
            = administrator_builder.text_field :email
    
          %li
            = administrator_builder.label :password
            = administrator_builder.password_field :password
    

    应该可以。诀窍是使用 fields_for 并创建一个新的表单构建器。然后,您基本上可以将其视为主要模型的一部分。

    如果你卡住了,你可以把碎片分开。当我学习将这些东西放在一起时,我会先在模型上工作,然后尝试在那里创建一个嵌套模型。然后,我将构建我的视图,并在我的控制器中运行一个调试器,以确保我在 params 对象中获得正确的信息。有时我可以使用足够多的参数来查看它应该是什么,然后返回并更新我的视图以正确构建表单。

    【讨论】:

      【解决方案2】:

      我希望这篇官方指南能回答你的问题:
      http://guides.rubyonrails.org/form_helpers.html#building-complex-forms

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        相关资源
        最近更新 更多