我正在尝试实现一个简单的异步搜索表单,该表单将使用AJAX在同一页面上显示搜索结果。我的代码如下。使用局部视图渲染搜索结果。提交表单时,我会重新创建一个结果数组,并希望它显示在页面上。但这没有发生,页面没有更新。我一直在看轨道一天,我觉得这很简单,但我需要帮助。
路线:
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>
答案 0 :(得分:1)
我还需要一个与视图相对应的视图,其格式为:index.js.erb
$('#results').html("<%= escape_javascript(render :partial => 'results') %>");
答案 1 :(得分:-1)
您使用了三元运算符:
@results = params[:search] ? ['test0', 'test1', 'test2'] : []
它的语法是:
If Condition is true ? Then value X : Otherwise value Y
但这不是条件:@results = params[:search]
,它只是作业。您需要提供一个条件,表达式返回true
或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"
将为{{1}},如果为false则为空。< / p>
关于三元运算符的示例:
{{1}}