2015-04-21 100 views
0

我想使用Rails ajax表單存儲在數據庫中的值,但它不存儲任何東西。請讓我知道我犯了什麼錯誤,並幫助我解決此問題。值不提交使用Rails ajax表格

我在下面解釋我的代碼。

用戶/ index.html.ebr:

<script type="text/javascript"> 
$('form').submit(function() { 
    var valuesToSubmit = $(this).serialize(); 
    console.log('hello') 
    $.ajax({ 
     type: "POST", 
     url: $(this).attr('create'), //sumbits it to the given url of the form 
     data: valuesToSubmit, 
     dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard 
    }).success(function(json){ 
     console.log("success", json); 
    }); 
    return false; // prevents normal behaviour 
}); 
</script> 
<p><%= flash[:notice] %></p> 
<%= form_for :user do |f| %> 
<p> 
    Name : <%= f.text_field :name,placeholder:"Enter your name" %> 
</p> 
<p> 
    Email : <%= f.email_field :email,placeholder:"Enter your email" %> 
</p> 
<p> 
    Content : <%= f.text_field :content,placeholder:"Enter your content" %> 
</p> 
<p> 
    <%= f.text_field :submit,:onchange => "this.form.submit();" %> 
</p> 
<% end %> 

<div id="sdf-puri" style="display:none" > 


    </div> 

控制器/ users_controller.rb

class UsersController < ApplicationController 
    def index 
     @user=User.new 
     respond_to do |format| 
      format.html 
      format.js 
     end 
    end 
    def create 
     @user=User.new(params[:user]) 
     if @user.save 
      flash[:notice]="user created" 
     end 
    end 
end 

create.js.erb
$("#sdf-puri").css("display", "block"); 
$("#sdf-puri").html("<%= escape_javascript (render 'table') %>"); 
$("#sdf-puri").slideDown(350); 

create.html.erb
<%= render 'table' %> 

_table.html.erb

<table> 
     <tr> 
      <th>Name :</th> 
      <th>Email :</th> 
      <th>Content :</th> 
     </tr> 
     <% @user.each do |user| %> 
     <tr> 
      <td><%= user.name %></td> 
      <td><%= user.email %></td> 
      <td><%= user.content %></td> 
     </tr> 
     <% end %> 
    </table> 

提交後的值應顯示相同指數page.Please幫助我。

+0

什麼是放出來的URL:$(本).attr(「創建」);另外爲什麼你使用ajax請求類型的職位?在這種情況下,可能會導致真實性標記問題。 –

回答

0

的Rails有一個內置的阿賈克斯系統,表單上需要添加remote: true

form_for(@user, remote: true) do |f| 

這告訴Rails提交引擎蓋下使用Ajax的形式...你並不需要所有的腳本的形式

你的控制器已經正確地具有線以上:

responds_to js 

因此,所有你會做的是在你的看法create.js文件/文件夾的用戶使得h andled你的回報阿賈克斯的東西,如附加或褪色等

0

你需要遠程添加:在表單標籤真正