0

RailsアプリケーションでRansackgemを使用しています。期待どおりに機能していますが、属性選択のドロップダウンボックスにある属性のリストを並べ替えるにはどうすればよいですか?残念ながら、ユーザーの「名前」はリストの一番下にあり、理想的には一番上にあります。

.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です。現在、すべてのユーザー属性が一覧表示され、次に各関連付けの属性が一覧表示されています。私のモデルでは、以下を使用していくつかの属性を除外しています。

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
4

1 に答える 1

0

私はこれをransackgithubリポジトリで見つけました:

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ます。誰かがより良い解決策を持っているなら、それでもここに投稿してください。

于 2012-11-13T21:06:00.027 に答える