3

私のレイアウト ファイルには、2 つのプルダウン メニューがあります。1 つ (カテゴリ) で選択が行われると、2 番目 (項目) の内容を更新する必要があります。

レイアウト ファイル内:

<div id="pull_down_items" class="pull-right">
    <%= render :partial => 'layouts/pull_down_items' %>
</div>
<%= render :partial => 'layouts/pull_down_category' %>

レイアウト/_pull_down_items.html.erb:

<%= select_tag "current_item", options_from_collection_for_select(current_category.items, "id", "item_name", session[:current_item]), :id=>"change_current_item", :remote => true %>

レイアウト/_pull_down_category.html.erb:

<%= select_tag "current_category", options_from_collection_for_select(categories, "id", "category_name", session[:current_category]), :id=>"change_current_category", :remote => true %>

application.js の jQuery:

$("#change_current_category").change(function() {
  var category_id = $(this).val();
  var url = "/system/" + category_id + "/change_category";
  $.post(url, category_id, function(html) {
  });
});

私のsystem_controllerでは:

  def change_category
    unless params["id"].blank?
      session[:current_category] = params["id"].to_i
      current_category.reload # this is a method in application_controller.rb
    end
    respond_to do |format|
      format.js
    end
  end

change_team.js.erb:

$("#pull_down_items").html("<%= render :partial => 'layouts/pull_down_items' %>")

結果: session[:current_category] ​​IS が正しいカテゴリに変更されました。アイテムのプルダウン メニュー div はリロードされません。

ご協力いただきありがとうございます。

4

1 に答える 1

1

デフォルトでjQuery.postは、ダウンロードしたコンテンツの実行は保証されません。dataTypehttp://api.jquery.com/jQuery.post/にあるように、引数を「script」に設定してみてください。

"script": 応答を JavaScript として評価し、プレーン テキストとして返します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。注: これにより、POST がリモート ドメイン リクエストの GET に変わります。

于 2013-01-09T09:17:46.660 に答える