2016-10-02 6 views
1

ユーザーが検索を送信したときにそのフィールドの前に「最後に検索された値」が表示される検索フォームがあります(検索フォームと結果は同じページにあります) 。以前の検索がない場合、フィールドにはプレースホルダ値があります。JavaScriptを使用してrails paramの値を置き換えます。

検索フィールド

<%= text_field_tag(:search_zip, nil, placeholder: " Zip Code", class: "common_search_field search_zip", onkeypress: "return isNumber(event);", maxlength: "5", required: true, value: params[:search_zip]) %> 

<%= submit_tag("Search", class: "search_submit_btn", onclick: "prePopSearchForm();") %> 

はJavaScript

function prePopSearchForm(){ 
    "<%= params[:search_zip] %>" = $(".search_zip").val(); 
    } 

問題がトンである送信ボタン彼params[:search_zip]は:search_zipフォームフィールドに元のparams[:search_zip]の値を保持します。送信ボタンをクリックしたときに現在の値を取得し、それをparams[:search_zip]の値として割り当てたいと思います。私はRailsを初めて使用しています& JavaScript、これはベストプラクティスではない場合、私は正しい方向に押していただければ幸いです。ありがとうございます。

+1

レールのサーバ上で動作し、javascriptのブラウザで実行されます。これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)であり、あなたがここで何をすることが期待されているかは不明です。 – charlietfl

+0

あなたは正しいです。これはAJAXで行われます。私は 'submit_tag'を取り除き、すべてのフォームフィールド値を含むAJAXフォームを送信するボタンに置​​き換えます。それを指摘してくれてありがとう。 – rebbailey

答えて

-1

実際は別の方法で動作するはずです。すべてのHTTPはリクエストレスポンスサイクルなので、コントローラーに新しいsearch_zipを使用するには、Webサーバーにリクエストを送信する必要があります。

function prePopSearchForm(){ 
    window.location.search = 'search_zip=' + $(".search_zip").val(); 
} 

しかし、より良い方法は、実際にすべてのフィールドを持つフォームを送信するために、次のようになります:あなたはこのようにそれを行うことができます

function prePopSearchForm(){ 
    $(".search_zip").closest('form').submit(); 
} 
+0

最後のものは意味をなさない...イベントはすでに送信ボタンでトリガーされています – charlietfl

+0

ボタンがフォームの中にあればトリガされます。あなたは 'onclick'ハンドラを使用しているので、そうでないかもしれません – faron

+0

デフォルトイベントが防止され、既定の処理を行うクリックハンドラを使用している点はありません – charlietfl

関連する問題