Passing javascript variables to rails controller

后端 未结 3 1525
予麋鹿
予麋鹿 2020-12-30 09:51

Here is the problem i\'m stuck on. I want to pass the javascript variables to the rails controller.



        
相关标签:
3条回答
  • 2020-12-30 10:24

    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>
    

    enter image description here

    0 讨论(0)
  • 2020-12-30 10:32

    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" } }
    
    0 讨论(0)
  • 2020-12-30 10:37

    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
        end
    end
    

    NOTE: Make sure you configure your config/route.rb accordingly

    More Info http://guides.rubyonrails.org/routing.html

    0 讨论(0)
提交回复
热议问题