0

ページの上部に JavaScript の日付ピッカーがあります。選択した日付が変数に格納されますnewDate

下のレールには次のようなフォームがあります。

<%= form_for(@checkin) do |f| %>
  ...
<% end %>

上記で選択した日付を、フォームの送信時にパラメーターとして渡されるようにします。私はこのようなことをしたい:

<%= f.hidden_field :checkedin_at, :value => newDate %>

しかし、このようにクライアント側とサーバー側のコードを混在させることはできないと確信しています。これをやってのける別の方法はありますか?

4

2 に答える 2

1

あなたがしたように隠しフィールドを作成することができ、javascriptからその隠しフィールドの値を実際の値に設定できます。

アーブ部分:

<%= f.hidden_field :checkedin_at, :value => '', :id => 'date' %>

Javascript 部分:

document.getElementById('date').setAttribute('value', newDate);

新しい日付値を取得したとき、または送信時にjavascript set partを実行できます。それはあなたの決定です。

変更中

すでに保存されている変数を後で変更する場合はcheckedin_at、事前にそれを読み取る必要があります。そのため、モデルから Erb に実際の値を設定し、次のように読み取る必要がある場合があります。

newDate = document.getElementById('date').getAttribute('value');

サイドノート

JavaScript を使って目立たない方法で行うことをお勧めします。通常のブラウザを使用できない障害のある人は、javascript をサポートしていないブラウザに備えてください。

したがって、単純な HTML ソリューションは、解析可能な (タイムスタンプではない) 日付フィールドを持つ表示可能な日付フィールドを持つのに適しています。

于 2012-10-05T07:36:19.237 に答える
0

送信時に、データフィールドデータを非表示フィールドにコピーしてからフォームを送信する必要があります。ただし、フォームの送信時に選択した日付を送信する場合は、フォームの表示可能で選択可能なフィールドとして日付を指定することをお勧めします。

于 2012-10-05T07:47:39.970 に答える