Ransack不使用多态列类型(未初始化的常量)

时间:2013-02-17 09:00:26

标签: ruby-on-rails ransack

我按照http://railscasts.com/episodes/370-ransack?view=asciicast设置了Ransack,它可以使用订单#index controller搜索Orders表中的大多数列。

但是,它不会搜索orderable_type或orderable_id,这两个列存储与其他模型的多态关联。有谁知道为什么,或者如何解决这个问题?

型号:

class Order < ActiveRecord::Base
  attr_accessible :quantity
  belongs_to :orderable, polymorphic: true
  belongs_to :delivery
  belongs_to :requisition

控制器:

  def index
    @search = Order.search(params[:q])
    @orders = @search.result
  end

查看:

= search_form_for @search do |f|
  .field
    = f.label :orderable_type_matches, "Type"
    = f.text_field :orderable_type_matches
  .field
    = f.label :created_at_gteq, "Created between"
    = f.text_field :created_at_gteq, 'data-behaviour' => 'datepicker'
    = f.label :created_at_lteq, "and"
    = f.text_field :created_at_lteq, 'data-behaviour' => 'datepicker'
  .actions
    = f.submit "Search"

我收到的错误是:

  

未初始化的常量Order :: Orderable Extracted source(第13行):

     

10:= f.text_field:location_place_matches 11:.field 12:=   f.label:orderable_type_matches,“Type”13:= f.text_field   :orderable_type_matches 14:.field 15:= f.label   :created_at_gteq,“在16:= f.text_field之间创建   :created_at_gteq,'data-behavior'=&gt; '日期选择器'

对于我的生活,我不明白为什么它对所有其他专栏的处理orderable_type不同 - 有人可以帮忙解决吗?

1 个答案:

答案 0 :(得分:0)

我并没有真正找到解决这个问题的方法,但是开发人员朋友提出了一种方法,我可以获得相同的结果,这可能有助于其他人。他说我应该只对表单字段进行硬编码,而不是依靠Ransack帮助程序来创建下拉菜单。这就是我所做的,它的工作原理: - )