Executing action with Ajax in RoR, and modifying html without refreshing the page


<tr id="<%= day.id %>">
<td><%= link_to 'Total', total_day_path(day), :remote => true %></td>

view raw

index.html.erb

hosted with ❤ by GitHub


$("tr#<%= @day.id %> td.oTotal").html("<%= @day.oTotal %>");
$("tr#<%= @day.id %> td.dTotal").html("<%= @day.dTotal %>");

view raw

myaction.js.erb

hosted with ❤ by GitHub


def myaction
respond_to do |format|
format.js {}
end
end

In index.html.erb we produce a link that triggers an ajax action when clicked by means of :remote => true. In this example the entity or model is Day and the action is total.

Notice that we render day.id as id for the html element we want to manipulate. This is how we could identify and work with that specific element (any element in the identified row).

Let’s look at myentity_controller.erb. There we got the repond_to block and the condition format.js {}. This indicates that javascript will be sent as response and the correspondent code must be included in a js.erb view with the name of the action (e.g. myaction.js.erb).

In myaction.js.erb we can use JQuery to manipulate the dom and html elements with the powerful help of Rails bindings.

Visit more tips in our dev adventure Adagio Dev

Current date and time in Ruby on Rails

On controller, obtain current time


class WelcomeController < ApplicationController
def index
now = Time.now
@strdate = now.strftime('%b %d')
@strtime = now.strftime('%H:%M')
end
end

On view, print the formatted date and time


<div class="thisinstant">
<div class="date">Date: <%= @strdate %></div>
<div class="time">Time: <%= @strtime %><div>
</div>

view raw

index.html.erb

hosted with ❤ by GitHub

 

This article was duplicated on our new dev blog Adagio Dev