2016-08-22 7 views
0

私は通常のリンクをクリックしたときに、部分的にレンダリングする方法を理解し、簡単に使用:リモート、しかし私はトラブル私の検索フォームがsubmit_tagを経由して送信されたときに部分的なレンダリングを持っています。部分をレンダリング

この私がトランスポートをレンダリングしたいindex.html.erb

<%= form_tag(transports_path, :method => "get", id: "search-form") do %> 

<%= select_tag "searchfrom", options_for_select(airport_names, params[:searchfrom]), :prompt => "Select From" %> 
<%= select_tag "searchto", options_for_select(airport_names, params[:searchto]), :prompt => "Select To" %> 

<%= submit_tag "Search" %> 
<% end %> 

<%= render :partial => 'transports/transports' %> 

で私のコードです/ submit_tagがクリックされた後、部分搬送し、私ものlink_toリンクに変換したくありません。

+1

もしあなたが 'remote:true'を使って' link_to 'で部分的にレンダリングする方法を知っていれば、フォームでも同じことができます。あなたの 'form_tag'に' remote:true'を追加するだけです。 **例:** '%@ form_tag transports_path、:method =>" get "、id:" search-form "、remote:true do%>' – dp7

+0

@dkpの説明は正しいものの、あなたは 'POST'メソッドフォームを実行し、次にコントローラから部分的な内容を変更するためだけにajax javascriptを返します(そして/または)フォームを削除するか、または何かを削除します。 – ksugiarto

+0

@ksugiartoデータベースから直接リクエストしています。 '@transports = Transport.where( "好きendloc LIKE strtloc?"、 "#{paramsは[:searchfrom]}%"、 "#{paramsは[:searchto]}%")が'これはから検索を行うものです私のコントローラ。 – Robert

答えて

0

それはおそらく短すぎないので、私は答え部に説明することができます。

フォームから送信すると、searchfromsearchtoのパラメータをコントローラーに送信してクエリの構成要素にすることができます。

$("#transports_list ").html("<%= escape_javascript(render 'transports/transports') %>"); 

しかししてください:のようなものが含まれ、

その後create.js.erbのようなリターンファイルの新しいタイプを作成追加:次にコントローラ、のようなものからjs形式で返します長い間私の最後のRoRのコーディング時に、私を修正:P

この方法はとても古いですが、多かれ少なかれコンセプトは、あなたのQUEを満たすことができますこのblogは私が思ったことを理解するのに役立つかもしれません。

+0

ありがとうございました。これが最終的に私のために働いたものです。 'form_tag'にtrue'を、それが魅力のように働いていた:私は何も追加することは'遠隔でした!ありがとうございました。これはまた私のURLの醜い検索クエリを取り除いた。これが私がRoRを愛する理由です。 – Robert

+0

はい、私はそれがあなたを助けてどれくらいのものか分かりませんが、あなたの答えが私のものとはかなり違っていると分かっていれば、あなたはいつも自分自身に答えることができます。 – ksugiarto

関連する問題