0

我正在创建一个 Rails gem,它为 Rails 的 fields_for 方法添加了功能,我希望它可以从任何表单构建器中调用。为了保持简洁、可继承(从 form_for、nested_fields_for 等)和向后兼容,我开始认为重写 fields_for 方法是最好的方法。

不过,我以前没有这样做过,我可以设想一些丑陋的问题。具体来说:

  • 我需要在新的方法中调用原始的 fields_for 方法(通过 alias_method)。如果 Rails 将来改变该方法的工作方式,我猜我的 gem 会破坏所有 fields_for 功能(?)

  • 如果另一个 gem 覆盖 fields_for,我怀疑我的或其他 gem 的 fields_for 方法将被忽略(?)

  • 一般来说,覆盖现有的 rails 方法的想法似乎很狡猾。

我确定这是其他开发人员面临的问题,我只是想知道 - 覆盖 rails 方法的标准方法是什么?在优秀的开发人员中,这是一个大禁忌吗?有没有另一种方法来解决这类问题?我是否应该放弃尝试简洁、优雅的解决方案并使用不同的方法名称来完成它?

任何建议表示赞赏。

4

1 回答 1

3

我不会覆盖您的方法,而是从 simple_form 和 formtastic 中获取一个页面。两者都有效地改变了 form_for 方法,但它们在顶部创建了一个新方法。

<%= simple_form_for @model do |f| %>
<% end %>

通过这种方式,您可以将所有未响应的内容发送到 form_for,并与方法签名更改保持隔离。

于 2012-05-08T17:01:39.777 回答