Form Ajax in Rails ?

I'm new in Rails.

I'm trying to add a form with ajax.It's just typing a text and submit to file 'ex/act' and show the param in form.

My code:

<script>     function loadDoc(url, cfunc) {       var xhttp;       xhttp=new XMLHttpRequest();       xhttp.onreadystatechange = function() {         if (xhttp.readyState == 4 && xhttp.status == 200) {           cfunc(xhttp);         }       };       xhttp.open("POST", url, true);       xhttp.send();     }     function myFunction(xhttp) {       document.getElementById("demo").innerHTML = xhttp.responseText;     } </script>

And the form:

<%= form_for :ex,url:ex_act_path,remote:true do |f|%>     <%= f.text_field :text%>     <button onclick="loadDoc('ex/act',myFunction)">abc</button> <%end%>

In the 'ex/act' controller:

def act     @a = get_param end private def get_param     params.require(:ex).permit(:text) end

In the Console of browser:

POST http://localhost:3000/ex/act 422 Unprocessable Entity GET http://localhost:3000/ex/act 200 OK

I'm new in Rails.

I'm trying to add a form with ajax.It's just typing a text and submit to file 'ex/act' and show the param in form.

My code:

<script>    function loadDoc(url, cfunc) {      var xhttp;      xhttp=new XMLHttpRequest();      xhttp.onreadystatechange = function() {        if (xhttp.readyState == 4 && xhttp.status == 200) {          cfunc(xhttp);        }      };      xhttp.open("POST", url, true);      xhttp.send();    }    function myFunction(xhttp) {      document.getElementById("demo").innerHTML = xhttp.responseText;    } </script>

And the form:

<%= form_for :ex,url:ex_act_path,remote:true do |f|%>    <%= f.text_field :text%>    <button onclick="loadDoc('ex/act',myFunction)">abc</button> <%end%>

In the 'ex/act' controller:

def act    @a = get_param end private def get_param    params.require(:ex).permit(:text) end

In the Console of browser:

POST http://localhost:3000/ex/act 422 Unprocessable Entity GET http://localhost:3000/ex/act 200 OK

Rails has full support for Ajax form submission baked in. Have you tried just adding remote: true to your form_for declaration, and see what happens? Watch in the console as you submit the form, see how the correct controller handles the request. If you write a JS view (name it the same as the controller method that is invoked by your form, so create.js.erb or update.js.erb, whichever is appropriate) then you will have access to your updated model object, and you can use it to re-paint the page with updated data. Here's a very nice write-up on this approach: :remote => true in Rails Forms

Walter