我如何使用redtape宝石? - 寻找更清晰的用法示例/示例

时间:2013-03-28 18:25:55

标签: ruby-on-rails gem nested-forms model-associations

问题:有没有人有一个如何使用redtape宝石的简单示例?我希望基本的MVC示例向我展示它是如何结合在一起的。

一个不同但相关的问题:为了使其正常运行,可能还需要做些什么,但Readme.md描述中没有列出这些内容?宝石所有者可能会假设新手(像我一样)可能不知道该做什么?

注意:我在这里提到“错误”,但不发布它们,因为我很确定它们不相关。我不认为我所看到的特定错误是有意义的,因为我甚至认为我没有正确地完成这些工作。

我很确定redtape gem是我需要的

我正在寻找Accept_nested_attributes_for(ANAF)的好替代品,似乎redtape gem是这类事情的热门选择。 (对于历史记录,请参阅我之前发布的这两个问题:Rails 3.2 app - Should I use a versioning gem (paper_trail or vestal_versions) or handle it manually?Rails - How to manage nested attributes without using accepts_nested_attributes_for?。)

但是我太愚蠢了不能使用它 - 我不知道我不知道

我的问题是我太无知了,因为按照附带的文档实际使用gem。通常情况下,我会通过Railscasts一集(例如#196 Nested Model Form (revised)在我意识到ANAF对我正在做的事情不够强大之前最初指向ANAF的情况下偶然发现这种解决方案,所以我只需按照准备好的指南找到这个选项。在这种情况下,没有Railscast,所以我有点卡住了。

以下是我已完成

的内容

我安装了gem,并且我尝试使用自述文件中提供的示例代码,但这就是我已经获得的。每次我尝试实际使用它时,我都会遇到一系列错误(“... redtape_path不存在”,各种数据类型错误),这些错误似乎随着我的控制器代码而变化。但我认为更大的问题是我不知道我在做什么,而我只是试图一起破解。

例如(来自Readme.md):

//The form...

<%= form_for @form, :as => :whatever %>
...

# The controller
class SomethingController
  def new
    @form = Redtape::Form.new(self, params)
  end

  def create # should support update as well...
    @form = Redtape::Form.new(self, params)
    if @form.save
      # ...
    else
      # ...
    end
  end
end

我认为我需要

有没有人实际使用过redtape,你能分享一个显示所有移动部件(MVC)的例子吗?我觉得我错过了一些大事。我基本上模仿了这个例子而没有运气(只是错误后的错误)。还有什么我想念的吗?我需要一个Form对象的“Something”模型吗?那是什么样的?

请注意,我也看过这篇帖子 - 7 Patterns to Refactor Fat ActiveRecord Models - 这似乎有帮助(第3点看起来可能非常相关),但我仍然不知道如何利用我发现的内容到目前为止。

1 个答案:

答案 0 :(得分:0)

我写了redtape。虽然,正如README所指出的那样,Form对象根本不是我的想法。实际上,不是Bryan Helmkamp(sp?),尽管他的博客文章激励我模仿和自动化他的特殊技术。我记得第一次看到它是在99年的Apache Struts中,我想。

尝试使redtape易于使用。也就是说,自从我为ClearFit编写它以来,我遇到了一个使用它的问题。我没有时间来诊断它(因为这是一个非常匆忙的小项目)但它可能是与simple_form的意外交互。

无论如何,对于典型的ANAF情况,您应该能够将嵌套的参数传递给Redtape::Form.new。返回的Form对象让您调用#save并让Redtape为您处理持久性,或者您可以使用#model提取对象图的顶部。 IIRC,Form也暴露了验证错误。

希望这有帮助。