2010-09-29 36 views
1

J'ai une forme, et pour la mise en page (et l'utilisation future), je voudrais savoir comment changer le f.submit par défaut qui génère un:RoR 3 - remplaçant la f.submit par défaut FormBuilder dans un bouton

À un tag html qui ne devrait pas donner d'erreurs.

Ce que j'est maintenant une extention sur le formbuilder

À mon avis:

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

Dans mon lib/appformbuilder:

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

Mais cela me donne une erreur:

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: 

Répondre

3

Vous devez mettre cette variable dans lib/app_form_builder.rb si vous voulez utiliser les rails à chargement automatique.

Attention, dans Rails 3, ce chargement automatique par défaut n'existe plus. Vous devez ajouter ce répertoire de chargement automatique dans votre application.rb

+0

superbe! Ajouté: config.autoload_paths << File.join (config.root, "lib") à application.rb, merci beaucoup! – NicoJuicy