2

レールで動的ドロップダウンを作成するための N 個のソリューションを試しましたが、何も機能していないようです。

私は典型的な州と都市のモデルを持っていますが、カルメンは使いたくありません。

これが私のモデルです:-

Market.rb

class Market < ActiveRecord::Base
    attr_accessible :state, :cities_attributes

    has_and_belongs_to_many :users

    has_many :cities, :dependent => :destroy

    accepts_nested_attributes_for :cities

    validates :state, :presence => true, :uniqueness => true

end

City.rb

class City < ActiveRecord::Base
    attr_accessible :city

    belongs_to :market

    has_and_belongs_to_many :users

end

in devise/registrations/new (サインアップ時にユーザーに州と都市を選択してもらいたい)

%li
  =f.collection_select :city, Market.all,:id, :state, html_options = { :class => "custom_textarea"}
%li
 =render "devise/registrations/cities", :f => f

_cities.html.haml 部分

-unless cities.blank?
    =f.collection_select( :city, @cities, :id, :cities)

registrations_controller.rb

def update_city_select
    @cities = City.where(:country_id => params[:id])
    render :partial => "cities", :locals => {:cities => @cities}
end

ユーザーが州を選択し、関連する都市が入力されると、都市リストが変更されます。

どうすればこれを達成できますか?

4

2 に答える 2

2

これには、状態ドロップダウンを含むビューで ajax を使用する必要があります。

$("#stateDropdown").change(function(){
  $.get("controller/update_city_select.html?id="+$("#stateDropdown").val(), 
        function(data){ $("#cityDropdownDiv").html(data); } );
});

これによりアクションが呼び出され、div のコンテンツが都市の新しいドロップダウンに置き換えられます。

あなたのパーシャルに:

#cityDropdownDiv
    -unless @cities.blank?
        = collection_select( :market, :city, @cities, :id, :cities)

:f => fこれにより、パーシャルをレンダリングするときにパラメーターを追加する必要がなくなります。

html_option 部分のドロップダウンに ID (「stateDropdown」と想定しています) を追加する必要があります。

于 2012-05-22T10:22:58.257 に答える
1

本当に役に立ったもう1つのチュートリアルは、依存ドロップダウンを実装しようとしている人に役立つと思います http://www.petermac.com/rails-3-jquery-and-multi-select-dependencies/

于 2012-05-24T07:22:29.150 に答える