1

ルートに次の行があります。

match 'area/:area_id/stores', :to => "stores_directory#index", :as => "stores_directory"

次のように area_id を選択できるフォームがあります。

<%= form_tag stores_directory_path, :method=>:get do %>

<select id="area_id" name="area_id">
....
</select>

これにより、? の後に area_id がパラメータとして追加されます。だから、私の質問は次のとおりです。エリア店舗の間にそれを追加するにはどうすればよいですか?

4

1 に答える 1

0

解決策が 1 つあります (最善ではないかもしれませんが、かなり許容範囲です)。このリクエストを処理する独自のミドルウェアを作成することは可能ですが、これは間違った方法だと私は信じています (この場合)。

代わりに、JS リダイレクトを使用してください

これはメソッドとして記述できます (JQuery を使用した例):

$('#area_id option').click(function() {
  if (this.value) { // check value is not empty
    document.location.href = Routes.stores_directory_path({area_id: this.value})
  }
});

または options_for_select を使用:

options = []
areas.each do |a|
  options << [a.to_s, a.id, {:onclick => "document.location.href = Routes.stores_directory_path({area_id: #{a.id}})"}]
end
options_for_select(options)

ここでは、素敵な URL にjs-routes gem を使用しました。

これが役立つことを願っています。

于 2012-05-22T05:00:53.030 に答える