2012-06-21 35 views
5

Tôi là lập trình viên mới bắt đầu trong Rails và tôi hiện đang cố tạo một biểu mẫu đơn giản có tên, email và số điện thoại, sau đó nhấp vào gửi nội dung cập nhật trang với những gì bạn đã nhập bằng cách sử dụng Ajax.Sử dụng Ajax để cập nhật một phần trong Rails

tức là nếu bạn nhập tài khoản, [email protected], và 555-555-555 vào các trường văn bản của mẫu và nhấp vào gửi, bạn sẽ nhận được

Tên: User Email: user @ ví dụ. com Số điện thoại: 555-555-555

Tôi biết đây là một câu hỏi đơn giản nhưng tôi không chắc chắn cách viết JavaScript để làm cho nó hoạt động.

Dưới đây là mã của tôi cho một phần:

<%= form_for(@user, :remote => true) do |f| %> 

Name: <div="Name"><%= f.text_field :name %></div> 
Email: <div="Email"><%= f.text_field :email %></div><br/> 
Phone Number: <div="Phone Number"><%= f.text_field :phone_number%></div><br/> 
<%= f.submit "Submit" %> 

điều khiển của tôi trông như thế này:

class UsersController < ApplicationController 

def new 
    @user = User.new 
end 

def create 
    @user = User.new(params[:user]) 
end 
end 

Trong file create.js.erb của tôi làm tôi sử dụng chức năng .update để thay thế các trường văn bản có thông tin đã nhập hoặc tôi có làm gì khác không ??

Trả lời

10

Nếu bạn quấn biểu mẫu trong div, bạn có thể thay thế nội dung của nó một cách dễ dàng sau:

<div id="theform"> 
<%= form_for(@user, :remote => true) do |f| %> 

Name: <div="Name"><%= f.text_field :name %></div> 
Email: <div="Email"><%= f.text_field :email %></div><br/> 
Phone Number: <div="Phone Number"><%= f.text_field :phone_number%></div><br/> 
<%= f.submit "Submit" %> 
</div> 

Sau đó, trong tập tin create.js.erb của bạn:

$("#theform").html("<%= escape_javascript(render partial: "users/user", locals: {user: @user}) %>"); 

Và trong bạn/app /views/users/_user.html.erb

Name: <%= user.name%> Email: <%= user.email%> Phone Number: <%= user.phone%> 
+0

Cảm ơn rất nhiều - đã hoạt động! Tôi sẽ phải tiếp tục đọc thêm về cách sử dụng Ajax trong Rails nhưng cảm ơn một lần nữa !! :) – tkrishnan

1

bạn đã cho bạn điều khiển từ xa đúng trên biểu mẫu và làm cho trình điều khiển của bạn phản hồi js

Xem:

<%= form_for(@user, :remote => true) do |f| %> 
    Name: <div="Name"><%= f.text_field :name %></div> 
    Email: <div="Email"><%= f.text_field :email %></div><br/> 
    Phone Number: <div="Phone Number"><%= f.text_field :phone_number%></div><br/> 
<%= f.submit "Submit" %> 

Bộ điều khiển:

class UsersController < ApplicationController 

    def create 
    @user = User.new(params[:user]) 
    @user.save 
    respond_to do |format| 
     flash[:notice] = "saved successful" 
     format.js # new.js.erb 
    end 
    end 
end 

và tạo một file mới có tên new.js.erb với mã ajax và sử dụng ruby ​​nhúng sintax khi bạn hài lòng

$('div#my_id').html('<%= @user.name%> - <%= @user.phone %>'); 
$('div#notice').html('<%= flash[:notice] %>'); 
Các vấn đề liên quan