2016-07-31 6 views
0

Im mit Ajax, um eine Controller-Aktion zu machen, wenn Sie ohne erneutes Laden der Seite geklickt. Ich kann nicht scheinen, dass die js-Ansicht gerendert wird.rendern eine Aktion von einem Klick auf eine Schaltfläche ohne Seite neu laden: Ajax

transactions_controller:

require "braintree" 

    def index 
     @reservations = Reservation.where("transaction_id = transaction_id", true) 

    end 

    def escrow 
     @reservation = Reservation.find(params[:id]) 
     @escrow = Braintree::Transaction.release_from_escrow(@reservation.transaction_id) 
     @reservation.update_attributes pay_completed: true 
     respond_to do |format| 
      format.html 
      format.js { render :layout=>false } 
     end 
    end 

    private 
    def reservation 
     @reservation = Reservation.find(params[:id]) 
    end 

Meine Link auf index.html.erb:

<% @reservations.each do |reservation| %> 
 
\t \t \t <% @transaction = Braintree::Transaction.find(reservation.transaction_id) %> 
 
\t \t \t 
 
  
 
    <tr> 
 
    <td><%= reservation.id %></td> 
 
    <td><%= reservation.transaction_id %></td> 
 
    <td><%= reservation.reviser.user.username %></td> 
 

 
    <td><%= reservation.user.username %></td> 
 
    <td><%= @transaction.status %></td> 
 
    <td><%= @transaction.escrow_status %></td> 
 
    <td><%= reservation.created_at %></td> 
 
    <td><%= reservation.completed %></td> 
 
<td><%= link_to "stock", escrow_path(reservation), :remote => true %></td> 
 
    
 
    </tr> 
 
    
 
\t \t \t 
 

 
\t \t \t 
 

 
\t \t \t 
 

 
\t \t \t <% end %>

routes.rb:

get 'admin/transactions' => 'admin/transactions#index' 
patch 'admin/transactions/:id' => 'admin/transactions#escrow', :as => 'escrow' 

escrow.js:

$('#escrow').html("<%= j (render @escrow) %>"); 

Ich bin nicht sicher, was ich falsch mache! Danke! :)

Antwort

0

keine Antwort, aber Tipps, wo man von hier aus gehen Sie zu:

Was Sie brauchen, um von hier aus zu tun ist, beginnen die Eingrenzung, wo das Thema stattfindet. Sie wissen, dass wenn Sie auf Ihren Link klicken, es nicht das tut, was Sie wollen. Gehen Sie Schritt für Schritt durch und sehen Sie, wo etwas schief geht. Aktualisieren Sie Ihre Frage mit Antworten auf folgende Fragen:

  1. Wenn Sie AJAX ausschalten (remote => false) funktioniert es? Jetzt

, mit Ajax eingeschaltet:

  1. Does Anklicken die Verbindung überhaupt eine Anfrage an den Server senden? (Verwenden Sie Chrome Dev Tools, um dies zu überprüfen) Ist die Anfrage das, was Sie erwarten?
  2. Erhält Ihr Rails-Server irgendeine Art von Anfrage? Sehen Sie sich die Protokolle an, nachdem Sie auf den Link geklickt haben, um zu sehen, ob überhaupt etwas passiert. Wenn ja, was? Sieht es nach einer erfolgreichen Anfrage aus?
  3. Wenn Sie nur den Code in escrow.js mit einem einfachen ersetzen alert('got here');, führt es aus?
+0

in meinen Protokollen, wenn ich klicke, bekomme ich app/admin/transactions.rb: 26: in 'block in escrow ' app/admin/transactions.rb: 25: in' escrow' –

0

können Sie so etwas wie dies versuchen:

# escrow.js.erb 
var html = "<%= escape_javascript(render partial: 'escrow', locals: { escrow_var: @escrow }) %>" 
$('#escrow').html(html); 

Sie einen Teil _escrow.html.erb und escrow_var innerhalb des Teils genannt haben sollten statt @scrow verwenden.

Sie können natürlich auch andere Namen verwenden.

Verwandte Themen