繁体   English   中英

Rails中的远程搜索表单3

[英]remote search form in rails 3

我正在尝试实现一个简单的异步搜索表单,该表单将使用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>

我还需要一个与以下视图相对应的视图,其形式为: index.js.erb

$('#results').html("<%= escape_javascript(render :partial => 'results') %>");

您使用了三元运算符:

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

它的语法是:

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

但这不是条件: @results = params[:search] ,这只是分配。 您需要提供一个条件,表达式返回truefalse ,如果true@result会有['test0', 'test1', 'test2']否则为false将是空的。

有关三元运算符的示例:

irb(main):182:0> name = "akonsu"
=> "akonsu"
irb(main):183:0> name == "akonsu" ? "Hello akonsu" : "Who are you?" 
=> "Hello akonsu"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM