Rails 3 + JQuery + Динамический Combobox - PullRequest
0 голосов
/ 18 февраля 2012

Я просматривал другие темы, но не смог заставить пример работать.

У меня есть выпадающий список "groups", который, когда я выбрал значение, будет изменять значения для "категорий" выпадающего списка, когда значения для этой выбранной группы

Просмотр (show.html.erb)

<%= form_for(@store_classification, :url => {:action => 'add_classification'}) do |f| %>
  <fieldset>
    <legend><%= t(:newClassificationDetails) %></legend>
    <%= f.hidden_field :store_id, :value => params[:id] %>
    <div id="groups" class="fields">
      <%= f.label t(:group) %><br />
      <%= f.select :group_id,
                   options_from_collection_for_select(@groups, :id, :name),
                   :data => { :remote => true, :url => url_for(:controller => :stores,
                                                                :action => :update_categories)}%>
    </div>
    <div id="categories" class="fields">
        <%= f.label t(:category) %><br/>
        <%= f.select :category_id, options_from_collection_for_select(@categories, :id, :name) %>
    </div>
    <div class='actions'>
        <%= f.submit t(:add) %>
    </div>
  </fieldset>
<% end %>

Частично (_categories.html.erb)

<div id="categories" class="fields">
        <%= f.label t(:category) %><br/>
        <%= f.select :category_id, options_from_collection_for_select(@categories, :id, :name) %>
    </div>

Контроллер (stores_controller.rb)

def show
    @store_classification = StoreClassification.new    
    @groups = Group.all
    @categories = Category.all
  end

  def update_categories
    category = Category.find(:all,
                             :conditions => ['group_id = ?',params[:selected]])
    render :partial => :categories
  end

Javascript (application.js)

$(document).ready(function(){
    $("#groups").change(function() {
        $.ajax({url: '<%= url_for :action => :update_categories, :id => @group_id %>',
        data: 'selected=' + this.value,
        dataType: 'script'})
    });
});

Спасибо за помощь

1 Ответ

0 голосов
/ 18 февраля 2012

не знаю, что за рельсы, вы, вероятно, должны были разместить html, сгенерированный им, в любом случае прикрепите обработчик события change к комбо groups 1003 *

$("#groupCombo").change(function(e){

  //make the ajax call to get the categories

  $.ajax({
     url:"url",
     type:"get",
     dataType:"json", //the type of response you are expecting from the server
     success:function(data){
        $("#categoryCombo").empty(); //clear the categories combo

        //iterate over the result sent by the server and populate the category combo e.g.
         $.each(data,function(k,v){
           $("#categoryCombo").append("<option>"+v+"</option>");
         });

     },
     error:function(jxhr){
         console.log(jxhr.responseText);
     }


  });

});

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...