2012-06-21 13 views
5

Jestem początkującym programistą w Rails i obecnie próbuję utworzyć prosty formularz, który przyjmuje nazwę, adres e-mail i numer telefonu, a następnie po kliknięciu przesyła aktualizacje strony z tym, co wprowadziłeś za pomocą Ajax.Używanie Ajax do aktualizacji częściowej w szynach

czyli po wpisaniu użytkownika, [email protected] oraz 555-555-555 w polach tekstowych formularza i kliknij przycisk Prześlij, należy uzyskać

Nazwa: User Email: użytkownik @ przykład. com Numer telefonu: 555-555-555

Wiem, że jest to proste pytanie, ale nie jestem pewien, jak napisać JavaScript, aby działało.

Oto mój kod cząstkowe:

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

Mój kontroler wygląda następująco:

class UsersController < ApplicationController 

def new 
    @user = User.new 
end 

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

W moim pliku create.js.erb mogę użyć funkcji .update zastąpić pola tekstowe z wprowadzonymi informacjami lub czy mogę zrobić coś innego?

Odpowiedz

10

Jeśli owinąć formę w div, można zastąpić jego zawartość łatwo później:

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

Następnie w pliku create.js.erb:

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

I w/app /views/users/_user.html.erb

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

Dziękuję bardzo - działało! Będę musiał dalej czytać więcej na temat używania Ajax w Railsach, ale dzięki jeszcze raz !! :) – tkrishnan

1

masz Państwu zdalne prawda na formularzu i na swój kontroler reaguje na js

Widok:

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

Kontroler:

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 

i utworzyć nowy plik o nazwie new.js.erb z kodem ajax i używać rubinowy osadzony sintax jak należy

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