Posts

Showing posts from 2013

Rails4 , Faster loading with turbolinks

The Ruby on Rails version 4.0.0 has been just released. The team took one and half years for development, Rails 4 comes with some interesting new features such as  Turbolinks, improved caching and thread-safe.

Turbolinkschanges your Rails application into a single page JavaScript application, that is, it doesn't load new pages but instead replaces the current page with new content from the server.
[ This is similar to pjax, but here we dont need to worry about which element on the page to replace, and combining the server-side response to add, The entire body will be replaced ] Few major points on Turbolinks1. Less Execution time : - Turbolinks makes following links in your web application faster. Turbolinks  won't allow the browser to recompile the JavaScript and CSS between each page change/loading, it keeps the current page there itself and replaces only the body and the title in the head.Execution time of code depends. The more CSS and JavaScript you have, the more benefit o…

Rails Kaminari - Ajax pagination

Here is a simple way to implement AJAX pagination using Kaminari gem.

Suppose, We are having a Product Model with fields id and name.

So, In the ProductsController,

def index
  @products =  Product.all.page(params[:page]).per(params[:per])
   respond_to do |format|
      format.js
      format.html
    end
end

in view file index.html.haml

  #products
    = render 'products'
  #paginator
    = paginate @products, :remote => true

And create _products.html.haml(this will be rendered from index) with content
%table
    @products.each do |product|
     %tr
       %td= product.name

Finally, We have to create one more  file _index.js.haml with content

$('#products').html("#{escape_javascript(render 'products')}");
$('#paginator').html("#{escape_javascript(paginate(@products, :remote => true)) }");

This post may help you. Please comment on the same, If you guys have any queries.

Jquery Auto Tab for Phone fields

Its a good thing, If  we implement autotab for telephone fields. It would be more nice. There are many Jquery plugins. But here I created my own simple autotab with a jquery function.

Here I'm explaining with rails application

Add onKeyup javascript event autotab() to your text fields in which you want to implement autotab

Then View should look like the following

<%=text_field_tag :isd, nil, :maxlength => 3, :onKeyup => "autotab(this)" %>
<%=text_field_tag :std, nil, :maxlength => 5, :onKeyup =>"autotab(this)"%>
<%=text_field_tag :num, nil, :maxlength => 12 %>

Then add the js function to your application.js

function autotab( field ){
if(field.getAttribute&&field.value.length==field.getAttribute("maxlength")){
    $(field).next('input').focus();
  }
}

This will do the autotab thing.
For any query please comment on the same thread. Thank you.

Rails mongoid has field model validation

This can be done only with a custom method validation, Such as
class Comment        include Mongoid::Document
       include Mongoid::Timestamps  include ActiveModel::Validations
validate :must_be_friends
def must_be_friends    errors.add(:base, 'Must be friends to leave a comment') if hash[:firstname].nil? end end

Rails 3.2 Ajax Paperclip Image uploading

I was working on uploading images using paperclip gem . I wanted to use Ajax. I googled a lot, But every result says its not possible, that  you can't upload images using Ajax. Some Jquery plug-ins are available, But its not behaving like what I really needed in my project.

Finally I got the solution for this problem. It is a common solution. First of all download the the js code and save it as jquey.form.js in assets/javascripts. Include in application.js like

//= require jquery.form

Next is your view. Which may look like this

<div id="image_view">
      <%=image_tag @model.image_attr_name.url %>
    </div>

Next is your form to upload image
[You can use bootstrap modal to render this form. Then it'll be more beautiful]

<%=form_for @model, :html => { :multipart => true, :id => "form_id" }, :url => url_for(:controller => 'controller', :action => 'method') do | f | %>
     Upload picture : <%= f.file_fi…