只要调用form_for,Rails就会自动调用应用程序帮助程序方法

时间:2011-10-09 00:35:57

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

在我的应用程序中,只要有表单,我就会调用两个辅助方法将一些javascript注入到网页的头部。一种方法注入代码以专注于表单的第一个输入,第二种方法将一些回调用于client_side_validation gem。

我将在视图中具有form_for的任何页面上调用这两个方法。有没有办法在调用form_for时自动调用这些方法,而不是将调用添加到我的模板文件中?

使用Rails 3.1。

2 个答案:

答案 0 :(得分:0)

您应该使用自己的调用助手的方法来包装form_for。幸运的是,Rails以alias_method_chain的形式提供了一种简单的方法。

module ActionView::Helpers::FormHelper
  def form_for_with_my_helpers (*args)
    my_helpers
    form_for_without_my_helpers (*args)
  end
  alias_method_chain :form_for :my_helpers
end

如果您不希望表单使用您的助手,现在可以使用普通的form_for参数调用form_for_without_my_helpers。

这可能会出现在加载路径中的某个位置。或者您可以要求保存此代码的文件。

答案 1 :(得分:0)

你不应该为这些使用Rails帮助方法。你应该使用jQuery。将其添加到您的application.js文件:

$(document).ready(function() {
  $('form>input:first-child').focus();
}

这是一个例子,对你正在讨论的回调使用类似的方法。