variable rails passing pass gon javascript ruby-on-rails variables

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