0

我一遍又一遍地查看我的代码,但我看不到我的问题。

我有两个 Models Person 和 Credential。他们有 HABTM 关系。

class Person < ActiveRecord::Base
  attr_accessible :credential_ids 
  has_and_belongs_to_many :credentials

  UNRANSACKABLE_ATTRIBUTES = ["id", "hidden_note", "created_at", "updated_at"]

  def self.ransackable_attributes auth_object = nil
    (column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
  end
end

凭据

class Credential < ActiveRecord::Base
  attr_accessible :description, :name
  has_and_belongs_to_many :people

  UNRANSACKABLE_ATTRIBUTES = ["id", "created_at", "updated_at"]

  def self.ransackable_attributes auth_object = nil
    (column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
  end

end

这是我在 People index.html.erb 中的表格:

<%= search_form_for @search, :class => 'no-bottom-margin form-inline' do |f| %>
    %= f.collection_select(:credentials_id_eq , Credential.all, :id, :name )%>
    <div class='actions'><%= f.submit "Search", :class => 'btn btn-primary btn-large' %></div>
<% end %>

最后,这是我得到的错误。

undefined method `credentials_id_eq' for #<Ransack::Search:0x00000105aa4f28>
4

1 回答 1

0

因此,如果您像这样使模型的属性 UNRACKSACKABLE :

UNRANSACKABLE_ATTRIBUTES = ["id", "created_at", "updated_at"]

您不能将 Ransack 的 :model_attribute_predicate 函数与该特定属性一起使用。像这样,:credentials_id_eq

现在很明显,但是我想在进行自定义查询时对用户隐藏 id,但让我自己可以使用它。我更改了 ransack 功能:credentials_name_cont,它工作得很好。此外,id从 unracksackable 属性列表中删除也可以。

于 2013-05-22T22:40:46.363 回答