HTTPS clone URL
Subversion checkout URL
Intelligently applies a maxlength attribute for text fields based on column constraints and validations
Fetching latest commit...
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
= smart_field_constraints +smart_field_constraints+ intelligently applies a maxlength attribute for text fields based on column constraints and validations. == Resources Wiki * http://wiki.pluginaweek.org/Smart_field_constraints API * http://api.pluginaweek.org/smart_field_constraints Development * http://dev.pluginaweek.org/browser/trunk/smart_field_constraints Source * http://svn.pluginaweek.org/trunk/smart_field_constraints == Description HTML input field restrictions within forms can often help with both validation and improving the user experience. Normally, adding the +maxlength+ configuration option for input fields is not DRY and duplicates data already available in the model or database. This plugin helps make this automatic. +smart_field_cosntraints+ looks in two places for determining the maxlength value for an input field: * Model validates_length_of validations * Database column definitions (limits specifically) Model validations will always take preference over database column definitions. == Usage There's nothing that you need to change to be able to use this plugin. It'll just start automatically adding the +maxlength+ values it finds based on the information described above (unless you define that option yourself). === Example Model: class User < ActiveRecord::Base validates_length_of :login, :maximum => 12 end View: text_field(:user, :login) HTML: <input id="user_login" maxlength="12" name="user[login]" size="30" type="text" /> === Textarea maxlengths Since the +maxlength+ attribute is not W3C-compliant for textareas, it is not included in the types of fields that will be automatically assigned length constraints. However, you can easily add this yourself by extending the plugin like done at http://dev.pluginaweek.org/ticket/2. == Caveats === Plugin load order If you have plugins with models that are loaded *before* smart_field_constraints is loaded, then any length validations defined in those models will *not* be tracked and automatically used in form fields. To fix this, you can adjust your application's plugin load order to ensure that smart_field_constraints is loaded first: config/environment.rb: Rails::Initializer.run do |config| ... config.plugins = [:smart_field_constraints, :all] ... end == Testing Before you can run any tests, the following gem must be installed: * plugin_test_helper[http://wiki.pluginaweek.org/Plugin_test_helper] To run against a specific version of Rails: rake test RAILS_FRAMEWORK_ROOT=/path/to/rails == Dependencies * Rails 2.0 or later