2010-09-29 23 views
1

我有一个表格,并为布局(和将来使用),我想知道如何更改生成默认f.submit:回报率3 - 重写FormBuilder默认f.submit成一个按钮

不应该给出任何错误的html标记。

什么,我现在是在formbuilder

在我看来,一个推广:

<%= form_for resource, :as => resource_name, :url => session_path(resource_name), :class => "form with-margin", :builder => AppFormBuilder do |f| %> 
    ... 
    <%= f.submit %> 
    <% end %> 

在我的lib/appformbuilder:

class AppFormBuilder < ActionView::Helpers::FormBuilder 
    def submit(text, options = {}) 
    options[:type] = "submit" 
    @template.content_tag(:button, text, options) 
    end 
end 

但是这给了我一个错误:

NameError in Devise/sessions#new 

Showing d:/Projects/Websites/Ruby On Rails/fact-it/app/views/devise/sessions/new.html.erb where line #11 raised: 
uninitialized constant ActionView::CompiledTemplates::AppFormBuilder 


8:   
9:  <p class="message error no-margin alert"><%= alert %></p> 
10:  <p class="notice"><%= notice %></p> 
11:  <%= form_for resource, :as => resource_name, :url => session_path(resource_name), :class => "form with-margin", :builder => AppFormBuilder do |f| %> 
12:   <p><%= f.label :email %><br /> 
13:   <%= f.text_field :email %></p> 
14: 

回答

3

如果您想使用导轨自动加载,则需要将此变量放在lib/app_form_builder.rb中。

警告,在Rails 3中,此默认自动加载不再存在。您需要在您的应用程序中添加此自动加载目录.rb

+0

superbe!增加:config.autoload_paths << File.join(config.root,“lib”)到application.rb,非常感谢! – NicoJuicy 2010-09-29 13:53:15