我有一个简单的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格式?
答案 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