无法让 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>`
你可以试试<%= simple_form_for rules_path do |f| %>
吗?
当我尝试提交按钮显示“保存/规则”并在单击时尝试保存新规则。
缺少的是:method => :get
,对不起!
这仍然存在提交操作链接到保存空的新操作链接上述评论的问题。【参考方案4】:
使用我的指南来获得使用 AJAX 的 simple_form 就地搜索框:http://rexstjohn.com/in-place-ajax-search-box-with-ruby-simple_form-gem/
【讨论】:
以上是关于无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
无法让 Rails 3 Active Scaffold 嵌套表单/记录正常工作