自定义表单构建器的设计和帮助程序

时间:2013-10-07 15:48:20

标签: ruby-on-rails ruby devise

我为设计注册表单创建了自定义表单构建器。

表单看起来像这样,并且工作正常:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), builder: BootstrapFormBuilder) do |f| 
  <%= f.text_field :username, :autofocus => true %>
  <%= f.email_field :email %>
  <%= f.password_field :password %>
  <%= f.password_field :password_confirmation %>

  <%= f.submit "Sign up", class: "btn btn-default" %>
<% end %>

现在我想创建一个名为bootstrap_form_for的帮助器。 在我写的应用程序助手中(只是为了测试它):

module ApplicationHelper
  def bootstrap_form_for(record, options = {}, &block)
    form_for(record, options = {}, &block)
  end
end

当我插入form_for代替bootstrap_form_for时,我在此undefined method 'users_path' for #<#<Class:0x007f9eb40bc728>:0x007f9eb40bb9b8>行中收到错误:bootstrap_form_for

错误页面标题:NoMethodError in Devise::Registrations#new

你知道为什么吗?

1 个答案:

答案 0 :(得分:0)

问题在这里:

module ApplicationHelper
  def bootstrap_form_for(record, options = {}, &block)
    form_for(record, options = {}, &block)
  end
end

应该是:

module ApplicationHelper
  def bootstrap_form_for(record, options = {}, &block)
    form_for(record, options, &block)
  end
end