0

AJAXを使用して同じページに検索結果を表示する簡単な非同期検索フォームを実装しようとしています。私のコードは以下の通りです。検索結果は、部分ビューを使用してレンダリングされます。フォームが送信されると、結果の配列が再作成され、ページに表示されることを期待しています。しかし、これは発生しておらず、ページは更新されません。私はもう1日レールを見ています、そしてそれは些細なことだと思います、しかし私は助けが必要です。

ルート:

match 'search' => 'search#index'

コントローラ:

class SearchController < ApplicationController
  def index
    @results = params[:search] ? ['test0', 'test1', 'test2'] : []
  end
end

ビューindex.html.erb

<%= form_tag search_path, :method => :get, :remote => true do %>
  <%= text_field_tag :search %>
  <%= submit_tag 'Search' %>
<% end %>
<div id="results">
  <%= render :partial => 'results' %>
</div>

部分図_results.html.erb

<ul>
  <% @results.each do |result| %>
    <li>
      <%= result %>
    </li>
  <% end %>
</ul>
4

2 に答える 2

1

次のフォームのビューに対応するビューがもう 1 つ必要でした。index.js.erb

$('#results').html("<%= escape_javascript(render :partial => 'results') %>");
于 2012-11-08T12:26:16.663 に答える
-1

三項演算子を使用しました:

@results = params[:search] ? ['test0', 'test1', 'test2'] : []

構文は次のとおりです。

If Condition is true ? Then value X : Otherwise value Y

しかし、これは条件ではありません:@results = params[:search]、それは単なる割り当てです。返す条件、式を指定する必要があります。trueまたはfalse、ある場合は、falseの場合は空になります。true@result['test0', 'test1', 'test2']

三項演算子の例:

irb(main):182:0> name = "akonsu"
=> "akonsu"
irb(main):183:0> name == "akonsu" ? "Hello akonsu" : "Who are you?" 
=> "Hello akonsu"
于 2012-11-08T05:10:40.830 に答える