rails - Pasar variables de javascript al controlador de rieles
rails passing variables to javascript (3)
Código Ajax en 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'');
}
});
});
Rutas: (como supongo que su nombre de controlador es libro)
match ''/BookCreate'', to: ''book#create''
Para esto, debes agregar el archivo jquery a tu código o a este enlace
<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>
Aquí está el problema en el que estoy estancado. Quiero pasar las variables de javascript al controlador de rieles.
<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>
Mi controlador
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
¡Gracias de antemano!
Puedes usar algo como
$.post("/bookings?booking[phone]=" + phone + "&booking[book_date]=" + mdate)
Irá a BookingsController#create
action con params hash:
{ booking: { phone: "entered from prompt", book_date: "26 December 2013" } }
Técnicamente no puedes pasar variables entre dos idiomas.
Puede pasar esos valores al controlador de rieles al anexar en 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>
En tu controlador
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
NOTA: asegúrese de configurar su config / route.rb en consecuencia
Más información http://guides.rubyonrails.org/routing.html