无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用

Posted

技术标签:

【中文标题】无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用【英文标题】:Can't get rails search form to work with simple_form and sunspot 【发布时间】:2013-03-22 21:59:21 【问题描述】:

我有一个简单的 Rails 应用程序,它使用 simple_form gem 作为表单,我正在尝试使用 sunspot 设置搜索表单。我已按照 Ryan Bates 的 railscast 中关于设置太阳黑子的说明进行操作,除了我知道我没有使用 simple_form 助手并且我想使用这一事实外,它工作正常。这是搜索表单的代码:

来自_search.html.erb:

<%= form_tag rules_path, :method => :get do |f| %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
<% end %>

来自 rules_controller.rb:

def index
  @search = Rule.search do
    fulltext params[:search]
  end
  @rules = @search.results

  respond_to do |format|
    format.html # index.html.erb
    format.json  render json: @rules 
  end
end

就像我提到的,这暂时有效,但问题是:

如何更改 _search.html.erb 以使用 simple_form 格式?

【问题讨论】:

【参考方案1】:

我可以通过为表单提供与输入名称相同的symbol 并指定 URL 来使其工作。看看您的form_tag 生成的 URL 以及 simple_form_for 仅通过路径生成的内容。所以在你的表单中试试这个:

<%= simple_form_for :search,  url: rules_path , :method => :get do |f| %>
    <%= f.input :query, :autofocus => true %>
    <%= f.submit "Search" %>
<% end %>

如果这不起作用,请研究您的 form_tag 生成的内容并尝试使用 simple_form 进行复制。

【讨论】:

【参考方案2】:

为此,我使用 simple_form 的下一个方法:

1.定义一个表单(我用haml)

=simple_form_for :search, url: search_path(:search), :method => :get  do |f|
 =f.input :q
 =f.submit "Search"

2。在 routes.rb 中定义路由

get '/jobs/search/:q', :to => 'jobs#search', :as => :search

3.在控制器中定义一个方法(在我的例子中是 jobs_controller.rb)

  def search
   @search = params[:search][:q]
  end

【讨论】:

【参考方案3】:

您是否尝试过以下方法:

<%= simple_form_for rules_path, :method => :get do |f| %>
  <%= f.input :search %>
  <%= f.button :submit %>
<% end %>

【讨论】:

我试过了,得到了以下错误:undefined method rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_path' for #:0x00000103b733e8>` 你可以试试&lt;%= simple_form_for rules_path do |f| %&gt;吗? 当我尝试提交按钮显示“保存/规则”并在单击时尝试保存新规则。 缺少的是:method =&gt; :get,对不起! 这仍然存在提交操作链接到保存空的新操作链接上述评论的问题。【参考方案4】:

使用我的指南来获得使用 AJAX 的 simple_form 就地搜索框:http://rexstjohn.com/in-place-ajax-search-box-with-ruby-simple_form-gem/

【讨论】:

以上是关于无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails:高级搜索

无法让 Rails 3 Active Scaffold 嵌套表单/记录正常工作

如何让 Jquery UI Autocomplete 与 Rails 4 一起使用?

Rails 跨多个模型搜索

Rails:搜索表单中的jquery自动完成

jQuery 表单插件 + Ajax 文件上传 + Rails