4

私のホームページには、ユーザーが検索クエリを入力できる入力ボックスがあります。次に、検索クエリを使用して別のページ (検索ページ) への get 要求を行う link_to があります。設計上、Rails の form_for を使用できません。

入力ボックスの変更を検出した後、クエリを「link_to」に動的に挿入するにはどうすればよいですか?

ここにモックがあります:

%input{:type => "text", :id => "my_input"}
= link_to "Search", posts_path(query: "my_query_here") 
:javascript
  $(function(){
      $("#my_input").change(function() {
          ... do something here ...
          });
  });

ありがとうございました。

4

1 に答える 1

5

できません。JavaScriptはサーバー側のコードをハッキングできません。ただし、サーバー側のコード(HTML)の結果をハッキングする可能性があります。

投稿リンクのクエリが正しく一致するようにするには、特定のIDを<%= link_to %>:に追加する必要があります。

<%= link_to "Search", posts_path, :id => "search_link" %>

次に、JavaScriptは次のようになります。

$("#my_input").change(function() {
   $("#search_link").attr("href","/posts?q=" + encodeURIComponent( $(this).val() ) );
});

入力が変更されるたびにリンクを更新するのではなく、クリックするだけで場所の変更を実行できることを提案してくれたユーザー@beck03076に感謝します。

$("#link").click(function() {
    $(this).attr("href", "/posts?q=" + encodeURIComponent($("#my_input").val()));
});

正確に何をしたいかによっては、これはあなたの期待と正確に一致しない場合があります。たとえば、リンクURLを検査してページ上の他の何かを更新する他のコードがある場合、この2番目の方法は機能しません。一方、クリックで検索を実行するだけの場合は、これがはるかに効率的です。

于 2013-02-28T21:05:45.093 に答える