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

Jos*_*ank 5 search ruby-on-rails sunspot railscasts simple-form

我有一个简单的 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 %>
Run Code Online (Sandbox Code Playgroud)

来自 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
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

我能够通过为表单提供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 %>
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请研究您的form_tag产品并尝试使用 simple_form 复制它。


Luí*_*lho 1

您是否尝试过以下操作:

<%= simple_form_for rules_path, :method => :get do |f| %>
  <%= f.input :search %>
  <%= f.button :submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)