0

これはおそらくかなり簡単な質問です。私は Rails や HTML に精通していないだけです...

ビューに 2 つの HTML テーブルがあり、両方ともそれぞれのデータベース テーブルから更新されています。各テーブルの時間範囲を選択するドロップダウン メニューがあります。私はもともと GET リクエストを使用していましたが、これにより他のテーブルが台無しになり、URL にパラメーターを含めたくないのです。したがって、POST を使用すると、各テーブルは独立して動作しますが、一方を更新するたびに、もう一方は:selected =>タグで指定されたデフォルトの時間範囲に戻ります。

<%= form_tag home_landing_path, :method => 'post' do %>
  <p>
    <%= select_tag :timePeriod, options_for_select(["1 Week Ago", "3 Months Ago"], :selected => params[:timePeriod]) %>
    <%= submit_tag "Refresh", :name => nil %>
  </p>
<% end %>

両方のテーブルは同じコードを使用します ( :timePeriodparam を除いて)。各テーブルがどこにあったかを「記憶」させるにはどうすればよいですか?

ルビー 1.9.3、レール 3.2.6、SQLite3 3.6.20

ありがとう!

4

1 に答える 1

0

htmlでは、フォームは互いに完全に独立しています。

1つのフォーム(1つのテーブルのみを囲む)を送信すると、そのフォームにあるパラメーターのみがサーバーに到着します。他のフォームから値を取得することはありません...したがって、ページを再レンダリングするときに、2番目のフォームに他の値があったことはわかりません。

他の問題と同様に、それぞれ独自の問題で問題を解決する方法は複数あります。

AJAXは優れたソリューションです。つまり、フォームは送信されますが、元の2番目のフォームがそのままの状態でページにとどまります。そうすれば、2番目のフォームのすべての情報が毎回失われることはありません。 「送信」を押します。

何らかの理由でそれができない場合、別の(かなり醜い)方法は、フォームを1つだけにすることです... 1つのアクションに投稿する...フォーム1に有用な情報があるかどうかに基づいて、何をするかを決定します。 form2のデータ。奇妙な理由がない限り、その方法はお勧めしません。

私はAJAXメソッドに行くと思います。

于 2012-09-05T09:23:23.950 に答える