1

データベーステーブルがあり、それらは、、、、およびで列にvehicles区切られています。 yearmakemodeltrim

yearユーザーが、、、、、、の順に選択できるフォームを作成したいと思います。各選択(を除く)ではmakemodelその前の選択を考慮に入れます。trimyear

これを行う方法はありますか?それはどのように見えるでしょうか?

4

1 に答える 1

2

さて、あなたはそれを行うためのさまざまな方法をたくさん持っています。

私は次のようにします:

$("#year']").click(function(){
  var url = '/get_make_values?year=' + $(this).val()
  $("#group").removeOption(/./)
  $.get(url, function(data) {
    $('#group').addOption(data, false);
  });
});

コントローラーで、

def get_make_values
  val = params[:year]
  #Use val to find records
  options = Vehicles.collect{|x| "'#{x.id}' : '#{x.label}'"}    
  render :text => "{#{options.join(",")}}" 
end

モデルでは、いくつかのスコープを定義できます:

class Vehicle < ActiveRecord::Base
  scope :by_year, lambda {|v| where(:year => year)}
  ...
end

お役に立てれば!

よろしく

編集:

部分的に説明します

JavaScriptでは、イベントを年のリストに関連付けてから、すべての make 値を取得するコントローラー アクションに GET 要求を行います。次に、MAKEリストにそれを入力します。メイク、モデル、トリムも行う必要があります

コントローラーでは、make 値を取得するメソッドを作成しています (これは get メソッドによって呼び出されます)。取得した他の値についても行う必要があります。モデルとトリム。

モデルでは、スコープ機能であるクエリを容易にするために使用できるリソースを提案しました。

私の返事を受け入れてください!

于 2012-10-23T18:05:21.717 に答える