0

以前の collection_select の選択に基づいて、collection_select のオプションを設定したいと思います。1 つの選択にスポーツがあり、そのスポーツに基づくチームを次の選択に入力したいと考えています。

問題は、私が見つけたすべての例がRORの古いバージョンのものであるため、ここで質問することにしました. 次のような厄介なものを追加する必要があることはわかっています。

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1.js?sports_id="+d, dataType: "script" });'})

player#returnsel1 を呼び出して returnsel1.js.erb を取得します。returnsel1 には変数があります

@teamstoreturn=Teams.where(:sport_id=params[:sport_id])

では、jquery returnsel1.js.erb はどのように見えるのでしょうか? ありがとうございました。ドリジャン

edit1: これが実際にどのように見えるかですが、動作しません:

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1?sports_id="+d, dataType: "script",success: function(data){ $("#player_teams_id").html(data)} });'})

コントローラーでは次のようになります。

  def returnsel1
    @teamstoreturn=Team.where(:sports_id=>params[:sports_id])
    render :inline => "<%= collection_select(:player, :teams_id, @teamstoreturn, :id, :naziv) %>"
  end

/players/returnsel1?sports_id=2 に移動すると、正しいドロップダウン メニューが表示されます

私は何を間違えましたか?

edit2: dataType: "html" の代わりに dataType: "script" が存在する必要があり、現在は機能しています:)

4

1 に答える 1

1

成功した回答を処理できる関数で .ajax リクエストを拡張する必要があります。これがなければ、答えは廃棄者です。おそらく、この関数には jquery コードを含めて、他の選択内容を変更する必要があります。

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1.js?sports_id="+d, dataType: "script", success: function(data){ $("#other_box_part").html(data)} });'})

このようにこの要素を変更するため、挿入する必要がある html フラグメントとしてこれをレンダリングする必要があります。そのため、回答に JavaScript コードは必要なく、html のみが必要です。例えば:

<%= select_tag ... %>
于 2012-05-04T12:50:12.847 に答える