Passing javascript variables to rails controller
Technically you cant pass variables between two languages.
You can pass those values to rails controller by appending in url
<script>var mdate = "26 December 2013";var phone = prompt('Enter your phone!');if (phone) { //Passing mdate and phone variables to rails controller(book_date & phone) window.open("localhost:3000//controller/create?mdate="+mdate+"&phone="+phone,"_self")}else{ alert("Cancelled");}</script>
In your controller
def create data = params[:date] phone = params[:phone] @booking = Booking.new(book_param) if @booking.save redirect_to root_url else flash[:notice_booking_failed] = true redirect_to root_url endend
NOTE: Make sure you configure your config/route.rb accordingly
Ajax code in jQuery:
$("#submit_button").submit(function(event) { /* stop form from submitting normally */ event.preventDefault(); /* get values from elements on the page: */ var mdate = $('#mdate').val(); var phone = $('#phone').val(); /* Send the data using post and put the results in a div */ $.ajax({ url: "/BookCreate/?mdate="+mdate+"&phone="+phone, type: "post", data: values, success: function(){ alert('Saved Successfully'); }, error:function(){ alert('Error'); } });});
Routes : ( As I am assuming your controller name is book )
match '/BookCreate', to: 'book#create'
For this you have to add jquery file to your code or this link
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script><script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
You can use something like
$.post("/bookings?booking[phone]=" + phone + "&booking[book_date]=" + mdate)
It will go to BookingsController#create
action with params hash:
{ booking: { phone: "entered from prompt", book_date: "26 December 2013" } }