0

検索フィールドとボタンがあります。ユーザーが「cat」のようなものを検索すると、私のビューは「catnip」、「cat toys」、「cats」などの一連の関連キーワードをレンダリングします...これらの結果はそれぞれリンクであり、の値を渡します表示される文字列を検索に戻して、選択したリンクの結果を生成します。例えば:

  1. ユーザーが検索ページをレンダリングし、「cat」を検索します
  2. 「キャットニップ」「子猫」などの「猫」に関連する結果を表示するビュー ページ
  3. ユーザーは「キャットニップ」をクリックするようになりました
  4. 「草」など「イヌハッカ」に関連する結果を表示するページを表示

これは link_to で可能ですか? 道に迷ってしまい、どうすればいいのかわからない...

--

私のコード:

SEARCH VIEW PAGE

<% form for(:search, url => search_path) do |f| %>
Search: <%= f.text_field :search %><br>
<%= f.submit "Search Keyword" %><p>   

<% unless @keywords.nil? %>
  <h3>Keyword Results</h3>
  <% @keywords.each do |k| %>
  <%= link_to k.name, :controller => "search", :action => "keywords", value => k.name %>
<% end %>

SEARCH CONTROLLER

def keywords
  if request.post? then
  @keywords = googlesearchapi(params[:search])
end

ユーザーがクリックした link_to 値を :search パラメータとして渡したい...アドバイスをよろしくお願いします~~

4

1 に答える 1

2

まず、リンクを「../search/keywords?search=catnip」にする必要があります。これを行うには、link_to を次のように変更します。

<%= link_to k.name, :controller => "search", :action => "keywords", :search => k.name %>

次に、行を削除する必要がありますif request.post? then。そうしないと、link_to からのリクエストを処理できません。これは POST ではなく GET リクエストであるためです。

于 2010-11-28T01:27:48.853 に答える