2013-04-01 65 views
2

我有一個簡單的rails應用程序,它使用表單的simple_form gem,我嘗試使用太陽黑子設置搜索表單。我已經按照Ryan Bates的railscast中有關設置太陽黑子的指示,除了事實上我知道我沒有使用simple_form助手並且我想這樣做。下面是搜索表單代碼:無法使用rails搜索表單與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

你有沒有試過如下:

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

我試過了,得到了以下錯誤:'未定義的方法'rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_rule_path」爲#<#<類:0x00000103bdc0c8>:0x00000103b733e8>' –

+0

你試試過嗎?<%= simple_form_for rules_path do | f | %>'而不是請? –

+0

當我嘗試提交按鈕說「保存/規則」,並嘗試點擊時保存新規則。 –

3

我能得到它的工作給予的形式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。

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