2016-04-07 55 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