无法获取rails搜索表单以使用simple_form和sunspot

时间:2013-04-01 19:12:30

标签: ruby-on-rails search simple-form sunspot railscasts

我有一个简单的rails应用程序,它使用simple_form gem表单,我正在尝试使用sunspot设置搜索表单。我按照Ryan Bates关于设置太阳黑子的轨道播放的说明进行操作,除了我知道我没有使用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格式?

4 个答案:

答案 0 :(得分:4)

我能够通过为表单提供与输入相同的名称symbol并指定URL来使其正常工作。查看您的form_tag生成的网址以及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复制它。

答案 1 :(得分:1)

您是否尝试过以下操作:

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

为了做到这一点,我在下一步使用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