2012-06-21 13 views
5

Soy un programador principiante en Rails y actualmente estoy tratando de crear un formulario simple que incluya un nombre, correo electrónico y número de teléfono, y luego cuando haga clic en enviar actualizaciones, la página con lo que has introducido usando Ajax.Uso de Ajax para actualizar un componente parcial en Rails

es decir, si se introduce usuario, [email protected] y 555-555-555 en los campos de texto del formulario y haga clic en enviar, usted debe conseguir

Nombre: Usuario Correo electrónico: usuario @ ejemplo. com Número de teléfono: 555-555-555

Sé que esta es una pregunta simple, pero no estoy muy seguro de cómo escribir el JavaScript para que funcione.

Aquí está mi código para el parcial:

<%= 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" %> 

Mi controlador se ve así:

class UsersController < ApplicationController 

def new 
    @user = User.new 
end 

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

En mi archivo create.js.erb hacer yo utilizo la función .Update para reemplazar los campos de texto con la información ingresada o ¿hago algo más?

Respuesta

10

Si envuelve su formulario en un div, puede reemplazar su contenido con facilidad más adelante:

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

A continuación, en el archivo de create.js.erb:

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

Y en tu/app /views/users/_user.html.erb

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

Muchas gracias, ¡funcionó! Tendré que leer más sobre cómo usar Ajax en Rails, ¡pero gracias de nuevo! :) – tkrishnan

1

tienes que usted verdadera remoto en su forma y hace su responden a un controlador de JS

Vista:

<%= 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" %> 

controlador:

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 

y crear un nuevo archivo llamado new.js.erb con el código Ajax y el uso de sintaxis rubí incrustado como desee

$('div#my_id').html('<%= @user.name%> - <%= @user.phone %>'); 
$('div#notice').html('<%= flash[:notice] %>'); 
Cuestiones relacionadas