Added simple form for easier form building.

This commit is contained in:
benni 2011-05-14 17:06:32 +02:00
parent ca15bb1102
commit 03d84aed1d
9 changed files with 185 additions and 5 deletions

View file

@ -9,7 +9,7 @@ gem "prawn", '<=0.6.3'
gem 'haml', '>=2.0.6'
gem "will_paginate", "~> 3.0.pre2"
gem 'jquery-rails'
gem 'simple_form'
group :development do
gem 'annotate'

View file

@ -78,6 +78,7 @@ GEM
rake (>= 0.8.7)
thor (~> 0.14.4)
rake (0.8.7)
simple_form (1.3.1)
thor (0.14.6)
treetop (1.4.9)
polyglot (>= 0.3.1)
@ -97,4 +98,5 @@ DEPENDENCIES
mysql
prawn (<= 0.6.3)
rails (= 3.0.7)
simple_form
will_paginate (~> 3.0.pre2)

View file

@ -3,7 +3,7 @@
%head
%meta{"http-equiv" => "content-type", :content => "text/html;charset=UTF-8"}
%title= "FoodSoft - " + (yield(:title) or controller.controller_name)
= stylesheet_link_tag 'main', 'rails_messages', 'nav', :cache => "all_cached"
= stylesheet_link_tag 'main', 'rails_messages', 'nav', 'simple_form', :cache => "all_cached"
= stylesheet_link_tag "print", :media => "print"
<!--[if lte IE 7]>
= stylesheet_link_tag 'ie_hacks'

View file

@ -0,0 +1,77 @@
# Use this setup block to configure all options available in SimpleForm.
SimpleForm.setup do |config|
# Components used by the form builder to generate a complete input. You can remove
# any of them, change the order, or even add your own components to the stack.
# config.components = [ :placeholder, :label_input, :hint, :error ]
# Default tag used on hints.
# config.hint_tag = :span
# CSS class to add to all hint tags.
# config.hint_class = :hint
# Default tag used on errors.
# config.error_class = :error
# Default tag used on errors.
# config.error_tag = :span
# Method used to tidy up errors.
# config.error_method = :first
# Default tag used for error notification helper.
# config.error_notification_tag = :p
# CSS class to add for error notification helper.
# config.error_notification_class = :error_notification
# ID to add for error notification helper.
# config.error_notification_id = nil
# You can wrap all inputs in a pre-defined tag.
# config.wrapper_tag = :div
# CSS class to add to all wrapper tags.
# config.wrapper_class = :input
# CSS class to add to the wrapper if the field has errors.
# config.wrapper_error_class = :field_with_errors
# You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
# config.collection_wrapper_tag = nil
# You can wrap each item in a collection of radio/check boxes with a tag, defaulting to none.
# config.item_wrapper_tag = nil
# Series of attemps to detect a default label method for collection.
# config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
# Series of attemps to detect a default value method for collection.
# config.collection_value_methods = [ :id, :to_s ]
# How the label text should be generated altogether with the required text.
# config.label_text = lambda { |label, required| "#{required} #{label}" }
# Whether attributes are required by default (or not). Default is true.
# config.required_by_default = true
# Custom mappings for input types. This should be a hash containing a regexp
# to match as key, and the input type that will be used when the field name
# matches the regexp as value.
# config.input_mappings = { /count/ => :integer }
# Collection of methods to detect if a file type was given.
# config.file_methods = [ :file?, :public_filename ]
# Default priority for time_zone inputs.
# config.time_zone_priority = nil
# Default priority for country inputs.
# config.country_priority = nil
# Default size for text inputs.
# config.default_input_size = 50
# When false, do not use translations for labels, hints or placeholders.
# config.translate = true
end

View file

@ -167,4 +167,28 @@ de:
price: Nettopreis
user:
password: Passwort
first_name: Vorname
first_name: Vorname
# Simple form i18n is used to build the forms
simple_form:
"yes": 'Ja'
"no": 'Nein'
required:
text: 'benötigt'
mark: '*'
# You can uncomment the line below if you need to overwrite the whole required html.
# When using html, text and mark won't be used.
# html: '<abbr title="required">*</abbr>'
error_notification:
default_message: "Fehler wurden gefunden. Bitte das Formular überprüfen."
# Labels and hints examples
# labels:
# password: 'Password'
# user:
# new:
# email: 'E-mail para efetuar o sign in.'
# edit:
# email: 'E-mail.'
# hints:
# username: 'User name to sign in.'
# password: 'No special characters, please.'

View file

@ -3,3 +3,26 @@
en:
hello: "Hello world"
simple_form:
"yes": 'Yes'
"no": 'No'
required:
text: 'required'
mark: '*'
# You can uncomment the line below if you need to overwrite the whole required html.
# When using html, text and mark won't be used.
# html: '<abbr title="required">*</abbr>'
error_notification:
default_message: "Some errors were found, please take a look:"
# Labels and hints examples
# labels:
# password: 'Password'
# user:
# new:
# email: 'E-mail para efetuar o sign in.'
# edit:
# email: 'E-mail.'
# hints:
# username: 'User name to sign in.'
# password: 'No special characters, please.'

View file

@ -0,0 +1,13 @@
<%%= simple_form_for(@<%= singular_name %>) do |f| %>
<%%= f.error_notification %>
<div class="inputs">
<%- attributes.each do |attribute| -%>
<%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %>
<%- end -%>
</div>
<div class="actions">
<%%= f.button :submit %>
</div>
<%% end %>

View file

@ -10,12 +10,12 @@ h3.notice {
font-size: 100%;
position: relative; }
h3.error, div.error {
h3.alert, div.alert, div.error {
color: red;
font-size: 100%;
font-weight: bold; }
h3.error {
h3.alert {
background: yellow url(/images/error.png) no-repeat 10px 3px;
border: 1px solid red;
padding: 4px 40px;

View file

@ -0,0 +1,41 @@
.simple_form label {
float: left;
width: 100px;
text-align: right;
margin: 2px 10px;
}
.simple_form div.input {
margin-bottom: 10px;
}
.simple_form div.boolean, .simple_form input[type='submit'] {
margin-left: 120px;
}
.simple_form div.boolean label, .simple_form label.collection_radio {
float: none;
margin: 0;
}
.simple_form label.collection_radio {
margin-right: 10px;
margin-left: 2px;
}
.simple_form .error {
clear: left;
margin-left: 120px;
font-size: 12px;
color: #D00;
display: block;
}
.simple_form .hint {
clear: left;
margin-left: 120px;
font-size: 12px;
color: #555;
display: block;
font-style: italic;
}