I have a small PHP service that is being called in a JavaScript file by AJAX :
$.ajax({
type: "GET",
url: "getDate.php",
dataType:"json",
data :{
fromDate:fromDate,
toDate:toDate
},
success: function(data) {
......
}
});
This service contains :
$fromDate = $_GET['fromDate'];
$toDate = $_GET['toDate'];
$fromDate=date_create($fromDate);
$fromdate = date_format($fromDate,"Y-m-d")."T".date_format($fromDate,"H:i:s")."Z";
$fromdate = urlencode($fromdate);
$toDate=date_create($toDate);
$todate = date_format($toDate,"Y-m-d")."T23:00:00Z";
$todate = urlencode($todate);
$url = "http://194.209.53.19:8086/query?db=Bellevue&q=select+*+from+measures+where+time%3E%3D%27".$fromdate."%27+and+time%3C%3D%27".$todate."%27";
$data = file_get_contents($url, false);
echo $data;
I need to use this in my Rails application. I was wondering if I could put the .php file in a Rails folder, and simply call it. Or if there's a way to do a similar service in Rails?
Sure, you can do this in Rails. First, you need to define the route for your request. Write the following in your routes.rb file, located at config/routes.rb:
get "/getDate" => "generals#get_date"
What that means is: whenever there is a GET
request for /getDate
, go to controller GeneralController
, and invoke its function named get_date
. If you wrote users#get_date
, Rails would try to find the get_date
method in UsersController
.
Generate the controller of your choice by following command:
rails generate controller General
It will generate a file named general_controller.rb in app/controller among other files.
Now, you need to define all your logic there. Other thing: in PHP, you get the sent data using $_GET['formDate']
, but in Rails, you will accomplish the same functionality by doing params[:formDate]
.
def get_date
form_date = params[:formDate]
# and now here you can write all your logic, and can finally return the response
respond_to do |format|
format.json { render json: data_to_be_returned }
end
end
Edit:
For date_create
or date_format
functions in PHP, you can look up their equivalents at here and here.