23

アプリに rails_admin をインストールしましたが、非常に基本的なことをしたいと考えています...2 つのモデルがあり、それらの関連付けが期待どおりに表示されます... :user に属するセミナー登録モデルがあります。

rails_admin では、私のセミナー登録ユーザーをユーザー #1、ユーザー #1 などとしてリストします。

代わりにそれをユーザーの名前にしたいと思います。私がなんとかしたことはこれです:

config.model SeminarRegistration do
label "Seminar Signups"
# Found associations:
  configure :user, :belongs_to_association 
  configure :seminar_time, :belongs_to_association   #   # Found columns:
  configure :id, :integer 
  configure :user_id, :integer         # Hidden 
  configure :seminar_time_id, :integer         # Hidden 
  configure :created_at, :datetime 
  configure :updated_at, :datetime   #   # Sections:

list do
  field :user do
    pretty_value do
     user = User.find(bindings[:object].user_id.to_s)
     user.first_name + " " + user.last_name
    end
  end
  field :seminar_time
end
export do; end
show do; end
edit do; end
create do; end
update do; end
end

「pretty_value」セクションには、ユーザーの姓名のテキストが表示されます...しかし、2 つの問題があります。

1) もはやリンクではありません。デフォルト値 (ユーザー #1、ユーザー #2 など) のままにすると、そのユーザーへのリンクが提供されます。そのリンクを元に戻すにはどうすればよいですか? rails_admin はどのようにパスを定義していますか?

2) フォームのすぐそこにある ID で検索する必要があるのは、非常に不格好に思えます...

これが基本的な質問である場合は申し訳ありません。私はマニュアルを読み、他の質問を調べましたが、まだ「クリック」していません。私はレールにもかなり慣れていません。

ありがとう。


リンクで動作させるには、これを行う必要がありました。

提案どおりフルネームのヘルパー メソッドを追加しましたが、ビュー ヘルパーに保持しました。

module ApplicationHelper
 def full_name(user_id)
  user = User.find(user_id)
  user.first_name + " " + user.last_name
 end
end

次に、「pretty_value」セクションを次のように変更しました。

pretty_value do
  user_id = bindings[:object].user_id
  full_name = bindings[:view].full_name(user_id)
  bindings[:view].link_to "#{full_name}", bindings[:view].rails_admin.show_path('user', user_id)
end

基本的に、任意のビュー ヘルパー (作成されたレールまたはその他) にアクセスするには、indings[:view].my_tag_to_use を追加する必要があります。

たとえば、ユーザーの rails_admin ルートを取得するには、次のようにします。

bindings[:view].rails_admin.show_path('user', user_id)
4

6 に答える 6

38

私はグーグルでこの質問に出くわし、これを行うためのはるかに簡単な方法を見つけました. titleorメソッドをモデルに追加nameします。これは、rails_admin が「User #1」を表示する代わりに使用します。

class User
  ...
  def name
    first_name + " " + last_name
  end
  ...
end

titleの代わりに使用できますnameが、あなたの場合は name を使用する方が理にかなっています。

于 2014-02-03T11:44:30.197 に答える
27
RailsAdmin.config {|c| c.label_methods << :full_name}

また

config.model full_name do
  object_label_method do
    :full_name
  end
end

次に、モデルに full_name メソッドを追加します。

于 2012-09-14T17:15:28.593 に答える
10

私は「ロール」モデルのようにこれを行います

config.model 'Role' do
  object_label_method do
    :custom_label_method
  end
end

def custom_label_method
  "#{role_name}"
end

できます

于 2014-04-10T13:36:23.520 に答える
2

これを User Model に追加するだけです:

# Prety User name display for rails_amdin
def to_s
    return self.name
end
def title
    return self.to_s
end

次に、サーバーを再起動します。

to_sメソッドとメソッドの両方を追加する必要があり、User スキーマから必要に応じてtitle変更できます。self.name

Rails 4で動作します。

于 2015-07-10T11:43:20.070 に答える
0

名前のように一般的なものを使用して、通常、モデルにメソッドを追加します。ただし、別の解決策は、RA でフィールドのラベルを構成することです

于 2016-01-13T01:38:44.750 に答える