2016-04-07 56 views
0

我正努力爲我的活動記錄歷史記錄獲取搜索表單。 我使用paper_trail gem以及ransack。兩人都一個人工作得很好。但每當我試圖實現一個搜索表單我得到一個奇怪的錯誤:使用Ransack gem的Paper_trail歷史記錄搜索表單

undefined method `paper_trail_versions_path' for #<#:0x007fede31da910>

這條線從我的觀點被強調:

<%= search_form_for @q, html: {class: "input-group"} do |f| %>

這裏的控制器代碼:

def history 
@all_versions = PaperTrail::Version.order('created_at DESC') 
@versions = @all_versions.paginate(:page => params[:page], :per_page => 100) 
@q = @versions.search(params[:q]) 
@versions = @q.result 
respond_to do |format| 
    format.html 
    end 
end 

的意見:

<%= search_form_for @q, html: {class: "input-group"} do |f| %> 
    <%= f.search_field :whodunnit_or_item_id_cont, placeholder: "Search for Users or Actions..", class: "form-control" %> 
    <span class="input-group-btn"> 
    <%= button_tag(type: 'submit', class: "btn btn-default") do %> 
    <i class="fa fa-search"></i> 
    <% end %> 
    </span> 
<% end %> 

任何想法?

在此先感謝!

編輯解決,感謝回答:

<%= search_form_for @q, html: {class: "input-group"}, :url => "/dashboards/history/" do |f| %>

回答

1

您看到來自search_form_for助手試圖猜測你的表單的操作URL中的錯誤。

Under the hood,搜查使用polymorphic_path軌道幫手,這一點,according to the doc,方法

for smart resolution to a named route call when given an Active Record model instance

在你的情況,你的模型是一個PaperTrail::Version,其解析爲paper_trail_versions_path

要修正此錯誤,您可以:

  • routes.rb文件中定義相應的資源,讓助手定義
  • 手動定義幫手
  • 提供給搜索形式url選項,以及表單操作的路徑。

希望它有幫助!

+0

非常感謝! – CottonEyeJoe