5

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

4

4 回答 4

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 %>

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

于 2013-07-24T19:54:25.113 回答
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
于 2014-06-24T18:31:44.040 回答
1

您是否尝试过以下方法:

<%= simple_form_for rules_path, :method => :get do |f| %>
  <%= f.input :search %>
  <%= f.button :submit %>
<% end %>
于 2013-04-01T19:28:33.320 回答
0

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

于 2014-01-08T18:43:33.437 回答