0

フォーム内でいくつかの JavaScript を使用して、選択ドロップダウン ボックスから値を取得し、それをフォームの別の部分で使用しようとしています。構文がわかりません。

最初に JavaScript 関数 (ビューの最後に配置しました):

<script type="text/javascript">
  function return_event_id()
  {
    var event_id = document.getElementById("event_id");
    return event_id.value;
  }
</script>

ビュー内には、次のものがあります。

<%= select("discount_code", :event_id, events_ids_titles_hash, { :include_blank => true }) %>

次のステートメントを追加すると:

return_event_id

次に、選択したドロップダウン項目がフォームに表示されます (ただし、return_event_id という単語も表示されます)。

私がこのようなことをすると:

<% selected_event_id =  return_event_id %> 

次のエラー メッセージが表示されます: undefined local variable or method `return_event_id'

私が探しているのは、event_id 値を変数に格納できるようにすることです。適切な構文は何ですか?

回答に関する追加の詳細とコメント:

1: はい、Ruby コード = サーバー、JavaScript コード = クライアント

2: コードを application.js のようなものに配置すると、view.erb モジュールから移動されますが、私の知る限り、結果は変わりません。

<% selected_event_id = return_event_id %> が機能しないことは理解していますが、何らかの方法で return_event_id からの出力をサーバーに渡し、それを Ruby 変数にキャプチャできるようにする必要があります。 javascript 関数の出力を使用して、フォーム内の別の要素を設定する方法です。

4

2 に答える 2

4

まず、javascript をビューから分離することをお勧めします。

js を別のファイルに記述し、Rails のバージョンに応じて public または assets ディレクトリに配置します。その後、raila 3.1+ を使用している場合は、アセットとともに自動ロードされます。3.1 未満の場合は、ビューに以下を追加します (頂点で )

<%= javascript_include_tag "my_javascript_filename" %>

そこから、必要なアイテムのリストを取得するために、Rails アプリに戻す ajax リクエストを作成することができます (これは、コントローラー コードとこれを処理するためのルートを記述することを意味します)。

http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/
上記の URL から getJSON メソッドを使用することをお勧めします

于 2012-07-16T12:19:44.793 に答える
1

JavaScript 関数を呼び出せるようにするには、次の 2 つのオプションがあります。

1) 単純明快:

select_tag に html 属性「onchange」を生成させます

select("discount_code", :event_id, events_ids_titles_hash, { 
    :include_blank => true, 
    :onchange => "fill_my_event_data();"
    }

次に、return_event_id() を使用する JavaScript 関数「fill_my_event_data」を記述し、必要なフォーム要素に必要なデータを配置します。

2) jQuery で「目立たない JavaScript」を使用します。その後、Rails で多くのことを行う必要はありません (正しい ID とデータ属性を提供することを除いて)。一番下の JavaScript セクションですべてを行います。関数を再度呼び出すイベント ハンドラーに select タグを接続します。もちろん、jQuery の基礎を学ぶ必要があります。そのようなことを頻繁に行う必要がある場合は、jQuery の知識が役に立ちます。

于 2012-07-16T13:02:42.300 に答える