2016-06-20 3 views
0

I von Ajax ausgewählt Dropdown-Menü Wert Controller senden möchtenWie Ajax in Ruby on Rails verwenden

panel_controller.rb

class PanelController < ApplicationController 

     def insert 
     @city_ids = params[:city] 
     end 
end 

panel.js.erb

$(document).ready(function() { 
    $('#f_city_id').change(function() { 
     var city_js_id = this.value 
     $.ajax({ 
      url: '/panel/insert', 
      type: 'GET', 
      data: {"city": city_js_id}, 
      success: function (data,status) 
      { 
       alert(this.url); 
      } 
     }); 
     return false; 
    }); 
}); 

routen.rb

get '/panel/insert' => 'panel#insert' 

Ansichten/Platte/insert.html.erb

<%= @city_ids %> 

aber @city_ids reagieren nicht Wert nach chenge Dropdown-Menü

+0

'Daten: { "Stadt": city_js_id}' sollte 'Daten: {Stadt: city_js_id}' – Emu

+0

@Emu ich ändern {Stadt: city_js_id} aber nicht arbeiten –

Antwort

1

Sie müssen antworten Sie von Ihrer insert Methode zurück.

Versuchen Sie, diese

class PanelController < ApplicationController 
    def insert 
    @city_ids = params[:city] 
    respond_to do |format| 
     format.html { render partial: 'insert.html.erb' } 
    end 
    end 
end 

eine Teildatei mit dem neuen Inhalt _insert.html.erb

<%= @city_ids %> 

In Sie panel.js.erb versuchen, die Reaktion zu kontrollieren und fügen Sie sie in Ihrem DOM wo nötig erstellen zu tun. Ihr aktualisierter Wert wird auf der Seite angezeigt.

$(document).ready(function() { 
    $('#f_city_id').change(function() { 
    var city_js_id = this.value 
    $.ajax({ 
     url: '/panel/insert', 
     type: 'GET', 
     data: {"city": city_js_id}, 
     success: function (res){ 
      $("#somediv").html(res); 
      //You will get the partial's content with the new data and you'll only need to append it to your page. 
     } 
    }); 
    return false; 
    }); 
}); 
+0

ich versuchen, diese aber nicht funktionieren = => ** Fehler {Vorlage fehlt} ** –

+0

Sie können den vollständigen Pfad angeben. Nehmen wir an, Ihr Teil befindet sich in 'views/panel/_inser.html.erb'. Do 'render partially: 'panel/insert.html.erb'' – Kumar

+0

Schau dir den Fehler an, er muss dir den Pfad geben, wo er nicht gefunden hat. Sie können es beheben. :) – Kumar