Skip to content

Instantly share code, notes, and snippets.

@cintrzyk
Created November 13, 2012 22:23
Show Gist options
  • Save cintrzyk/4068836 to your computer and use it in GitHub Desktop.
Save cintrzyk/4068836 to your computer and use it in GitHub Desktop.
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require rails.validations.simple_form
//= require_tree .
//= require_self
(function() {
$(document).ready(function() {
return $("div.control-group").focusout(function() {
if (!$("div.control-group").hasClass("error")) {
return $(this).addClass("success");
}
});
});
}).call(this);
ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
add: function(element, settings, message) {
var errorElement, wrapper;
settings.wrapper_tag = ".control-group";
settings.error_tag = "span";
settings.error_class = "help-inline";
settings.wrapper_error_class = "error";
settings.wrapper_success = "success";
if (element.data('valid') !== false) {
wrapper = element.closest(settings.wrapper_tag);
wrapper.removeClass(settings.wrapper_success);
wrapper.addClass(settings.wrapper_error_class);
errorElement = $("<" + settings.error_tag + "/>", {
"class": settings.error_class,
text: message
});
return wrapper.find(".controls").append(errorElement);
} else {
wrapper = element.closest(settings.wrapper_tag);
wrapper.addClass(settings.wrapper_error_class);
return element.parent().find("" + settings.error_tag + "." + settings.error_class).text(message);
}
},
remove: function(element, settings) {
var errorElement, wrapper;
settings.wrapper_tag = ".control-group";
settings.error_tag = "span";
settings.error_class = "help-inline";
settings.wrapper_error_class = "error";
settings.wrapper_success = "success";
wrapper = element.closest("" + settings.wrapper_tag + "." + settings.wrapper_error_class);
wrapper.removeClass(settings.wrapper_error_class);
wrapper.addClass(settings.wrapper_success);
errorElement = wrapper.find("" + settings.error_tag + "." + settings.error_class);
return errorElement.remove();
}
};
<%= simple_form_for @wallet, validate: true, url: create_budget_path, html: {class: "form-horizontal"} do |f| %>
<%= f.input :name, label: 'Budget name' %>
<%= f.input :amount, wrapper: :append, wrapper_html: {id: 'budget_amount'} do %>
<%= f.input_field :amount, as: :currency %>
<% end %>
<div id="budget_plan">
<%= f.simple_fields_for :expenses do |builder| %>
<%= render "expenses/expenses_fields", f: builder %>
<% end %>
<div><%= link_to_add_fields "Add Expense", f, :expenses %></div>
</div>
<div class="form-actions">
<%= f.button :submit, 'Add budget', class: 'btn btn-primary' %>
<%= link_to "Plan this budget", "#", id: "budget_plan_link", class: "btn" %>
</div>
<% end %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment