0

インデックス ページには、フォームではなく、マップ上のマーカーのフィルターとして機能するボタンがいくつかあります。

フィルターの選択肢をパラメーターとしてインデックス アクションに投稿しようとしています。

どうすればこのようなことをすることができますか?

 function filterchanged()
  {

  $.post('/index.html.erb', { filter1: 'value1', filter2: 'false' }, function(result) {
      alert('successfully posted filter1=value1&key2=filter2 to index.html.erb');
    });
   ....
}

私のインデックスコントローラーアクションは次のようになります。

 def index

      if params.has_key?(:filter1) 
        if params[:filter2]
          @posts = Post.typeA
        else
          @posts = Post.typeB
      end

      else 
        @posts = Post.all
      end

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end

これは正しいアプローチですか?

4

2 に答える 2

0

index アクションのパスは本当に奇妙です。 /index.html.erbはインデックス ビューのファイル名であり、このように使用するためのものではありません。

そのアクションを指すには、ルート パスを使用する必要があります。

ターミナルを開いて実行rake routesし、インデックス アクションの正しいルートを確認します。すべてのルートが設定されています/config/routes.rb

これをご覧になる必要があると思います: http://guides.rubyonrails.org/routing.html

于 2013-04-26T02:48:08.883 に答える
0

filter1 と filter2 に等しい名前の 2 つの非表示フィールドをフォームに追加してみてください (フォームはそれらをコントローラー アクションに渡します。各ボタンの onClick イベントを使用して、それぞれの非表示フィールドの値を更新し、必要に応じて値を切り替えます。非表示フィールドをデフォルトで 0 または false または任意の値に設定します。

次に、コントローラー アクションでフィルター変数の値を確認します。

于 2013-04-25T20:16:46.980 に答える