2012-06-21 11 views
5

Sono un programmatore per principianti in Rails e attualmente sto cercando di creare un modulo semplice che accetta nome, e-mail e numero di telefono, quindi quando si fa clic su invia aggiorna la pagina con quello che hai inserito usando Ajax.Utilizzo di Ajax per l'aggiornamento di un parziale in Rails

cioè se si inserisce l'utente, [email protected], e 555-555-555 nei campi di testo del modulo e clicca su Invia, si dovrebbe ottenere

Nome: User Email: user @ esempio. com Numero di telefono: 555-555-555

So che questa è una domanda semplice ma non sono abbastanza sicuro di come scrivere JavaScript per farlo funzionare.

Ecco il mio codice per il parziale:

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

mio regolatore di simile a questa:

class UsersController < ApplicationController 

def new 
    @user = User.new 
end 

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

Nel mio file create.js.erb si usa la funzione di .Update da sostituire i campi di testo con le informazioni inserite o faccio qualcos'altro ??

risposta

10

Se si avvolgono il modulo in un div, è possibile sostituire il contenuto facilmente in seguito:

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

Poi nel file create.js.erb:

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

E nel tuo/app /views/users/_user.html.erb

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

Grazie mille - ha funzionato! Dovrò leggere di più su come usare Ajax in Rails ma grazie ancora !! :) – tkrishnan

1

you got a voi remota vera sul modulo e rendere il vostro controller per rispondere un 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" %> 

Controller:

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 

e creare un nuovo file chiamato new.js.erb con il codice Ajax e utilizzare rubino sintassi incorporato come ti pare

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