bugfix> javascript > 投稿

選択ボックスにデータのコレクションがあります。 @users = User.all としましょう 。変更時に、選択されたユーザーでjavascriptの変数を取得したいのですが、次のようなものです:

   $("user_select").change(function(e){
        e.preventDefault();
        user_id = $(this).val();
        user = <%= @user.find(<user_id>) %>
    })

出来ますか?または、コレクション全体をjavascript変数に入れてそこから取得する必要がありますか?

回答 2 件
  • Is it possible?

    これは好きじゃない選択肢は2つだけです。

    サーバー側の検索:サーバーに別の要求を作成し、そこで user_id を渡します  ユーザーデータを取得します。

    クライアント側のルックアップ:前述のように、すべてのユーザーからのデータをページに埋め込み、 user_id に基づいていずれかのユーザーを選択するだけです 。

  • @ sergio-tulentsevが言ったように、私は簡単な方法で考えています、あなたがやろうとしていることは可能ではありませんが、より多くのjsを使用して、あなたがすでにすべてをロードしていれば、レールコレクションでユーザーを見つける必要はありませんユーザーは、それらをjavascript変数に渡して、変更イベントで、そこから1つを選択するだけです。

    すべてのユーザーでページをロードするとき、jsonとしてjavascript変数に保存するだけです

    var users = <%= @users.to_json.html_safe %>;
    
    

    その後、あなたのイベントで

    $("user_select").change(function(e){
      e.preventDefault();
      user_id = $(this).val();
      $.each(users, function(i, u) {
        if (u.id == user_id) {
          user = u
          return;
        }
      });
    })
    
    

    それであなたはjsonを持つユーザーとそこのユーザーのすべての値を持つことになります、そしてあなたは user.name のような何かをすることができます  JavaScriptで値を取得します。

    コード例を使用しているため、jqueryを使用しました。

あなたの答え