Here is the problem i'm stuck on. I want to pass the javascript variables to the rails controller.
<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)
}
else
{
alert("Cancelled");
}
</script>
My controller
def new
@booking = Booking.new
end
def create
@booking = Booking.new(book_param)
if @booking.save
redirect_to root_url
else
flash[:notice_booking_failed] = true
redirect_to root_url
end
end
private
def book_param
params.require(booking).permit(:id, :book_date, :phone)
end
Thank you in advance!
Here is the problem i'm stuck on. I want to pass the javascript variables to the rails controller.
<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)
}
else
{
alert("Cancelled");
}
</script>
My controller
def new
@booking = Booking.new
end
def create
@booking = Booking.new(book_param)
if @booking.save
redirect_to root_url
else
flash[:notice_booking_failed] = true
redirect_to root_url
end
end
private
def book_param
params.require(booking).permit(:id, :book_date, :phone)
end
Thank you in advance!
Share Improve this question asked Dec 26, 2013 at 14:56 CodeGeekyCodeGeeky 4531 gold badge5 silver badges15 bronze badges3 Answers
Reset to default 9Technically 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
end
end
NOTE: Make sure you configure your config/route.rb accordingly
More Info http://guides.rubyonrails.org/routing.html
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" } }