我在Rails应用程序中使用Ransack gem。它按预期工作,但如何在属性选择的下拉框中重新排序属性列表?对我来说不幸的是,用户的“姓名”位于列表底部附近,理想情况下它位于顶部。
.field
= f.attribute_fields do |a|
= a.attribute_select associations: [:terms, :contact_informations, :educational_experiences, :home_towns, :local_residences, :permanent_addresses, :emergency_contact_informations]
以上是我当前的attribute_select,现在它列出了所有Users属性,然后列出了每个关联的属性。在我的模型中,我使用以下内容来过滤掉一些属性。
def self.ransackable_attributes(auth_object = nil)
super - ['id', 'first_name', 'middle_name', 'last_name', 'created_at', 'updated_at', 'encrypted_password', 'reset_password_token', 'reset_password_sent_at', 'remember_created_at',
'sign_in_count', 'current_sign_in_at', 'last_sign_in_at', 'current_sign_in_ip', 'last_sign_in_ip']
end
答案 0 :(得分:0)
我在ransack github存储库中找到了这个:
def ransackable_attributes(auth_object = nil)
column_names + _ransackers.keys
end
所以在我的模型中,我可以通过执行不同的操作来覆盖此方法。
def self.ransackable_attributes(auth_object = nil)
column_names.unshift(column_names.delete('name', 'role')) - ['id', 'first_name', 'middle_name', 'last_name', 'created_at', 'updated_at', 'encrypted_password', 'reset_password_token', 'reset_password_sent_at', 'remember_created_at',
'sign_in_count', 'current_sign_in_at', 'last_sign_in_at', 'current_sign_in_ip', 'last_sign_in_ip']+ _ransackers.keys
end
由于column_names
只是一个数组,我可以从数组中删除一个元素,然后用unshift
添加它。如果有人有更好的解决方案,请在此处发布。