2012-07-25 11 views
19

के बजाय rails_admin डिस्प्ले नाम मैंने अपने ऐप में rails_admin स्थापित किया है और मैं कुछ मूलभूत बुनियादी कार्य करना चाहता हूं ... मेरे पास दो मॉडल हैं और उनका सहयोग अपेक्षित है ... मेरे पास सेमिनार पंजीकरण मॉडल है जो संबंधित है : उपयोगकर्ता।आईडी

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" खंड मुझे मेरे उपयोगकर्ता का प्रथम और अंतिम नाम का पाठ देता है ... लेकिन दो समस्याएं हैं:

1) यह नहीं है एक लिंक लंबा यदि मैं डिफ़ॉल्ट मान छोड़ देता हूं (उपयोगकर्ता # 1, उपयोगकर्ता # 2, आदि) यह उस उपयोगकर्ता को एक लिंक प्रदान करता है। मैं उस लिंक को वापस कैसे प्राप्त करूं? Rails_admin कैसे अपने पथ को परिभाषित करता है?

2) बहुत मेरी रूप में वहीं आईडी से ऊपर देखो करने के लिए भद्दा लगता है ...

क्षमा करें अगर यह एक बुनियादी सवाल है। मैंने मैनुअल पढ़ा है और अन्य प्रश्नों को देखा है लेकिन अभी तक मेरे लिए काफी "क्लिक नहीं किया गया है"। मैं रेल के लिए भी बहुत नया हूँ।

धन्यवाद।


मैं यह करने के लिए यह लिंक के साथ काम करने के लिए पाने के लिए था:

मैं पूरा नाम के रूप में सुझाव के लिए एक सहायक विधि जोड़ा है, लेकिन मेरे विचार सहायकों में यह रखा:

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 

मूल रूप से, किसी भी दृश्य की पहुंच पाने के लिए वह lpers (रेल बनाया या अन्यथा) आप indings जोड़ने के लिए [: दृश्य]

.my_tag_to_use एक उपयोगकर्ता के लिए rails_admin मार्ग प्राप्त करने के लिए, उदाहरण के लिए आप कर सकते हैं:

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

उत्तर

20
RailsAdmin.config {|c| c.label_methods << :full_name} 

या

config.model full_name do 
    object_label_method do 
    :full_name 
    end 
end 

फिर अपने मॉडल में एक पूर्ण_नाम विधि जोड़ें।

+0

ठीक है, यह करने का एक साफ तरीका है। लेकिन मुझे लिंक नहीं मिला ... मैंने यह दिखाने के लिए ऊपर अपना जवाब संपादित किया कि मैं इसे कैसे काम कर रहा हूं। – user1535082

+0

यह काम करता है लेकिन एसोसिएशन लुकअप में आप केवल पहले या अंतिम नाम के आधार पर खोज सकते हैं, लेकिन दोनों एक साथ नहीं। –

+0

मुझे ऑब्जेक्ट_label_method के साथ एक लिंक भी मिलता है, एसोसिएशन को केवल –

30

मैंने Google पर इस प्रश्न पर ठोकर खाई और ऐसा करने का एक आसान तरीका मिला। अपने मॉडल के लिए title या name विधि जोड़ें, जो "उपयोगकर्ता # 1" प्रदर्शित करने के बजाय rails_admin उपयोग करेगा।

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

आप उपयोग कर सकते हैं title बजाय name, लेकिन आपके मामले में इसे और अधिक समझ में आता है नाम का उपयोग करने के लिए।

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

तब सर्वर को पुनः आरंभ:

+0

बहुत बढ़िया और आसान उत्तर परिभाषित करना होगा, थक्स बहुत! – GuiGreg

+0

अब तक का सबसे अच्छा हैक! : डी – AshwinKumarS

+1

बिल्कुल शानदार। यह स्वीकार्य उत्तर होना चाहिए। – Brit200313

9

मैं 'भूमिका' मॉडल

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

def custom_label_method 
    "#{role_name}" 
end 

यह

+1

यह वही था जो मुझे चाहिए था। मैं दूसरों के लिए थोड़ा सा संदर्भ जोड़ूंगा कि आपको rels_admin.rb प्रारंभकर्ता और custom_label_method को मॉडल वर्ग में "config.model" जोड़ना चाहिए। –

0

काम करता है बस अपने उपयोगकर्ता मॉडल में इस ऐड के लिए की तरह यह करते हैं।

आपको to_s और title विधि दोनों जोड़ना होगा और आप अपनी उपयोगकर्ता स्कीमा से जो भी चाहें self.name बदल सकते हैं।

यह रेल 4.

+0

आपको 'to_s' की आवश्यकता नहीं होगी। 'शीर्षक' या 'नाम' को परिभाषित करना पर्याप्त होगा, स्रोत [यहां] देखें (https://github.com/sferik/rails_admin/blob/12aeaf30b2148d3cbebb2f831132b4787fd47bfe/lib/rails_admin/config.rb#L50) –

0

साथ मेरे लिए काम करता सामान्य रूप में कुछ नाम के रूप में मैं आमतौर पर मॉडल पर एक विधि को जोड़ने के साथ। लेकिन वैकल्पिक समाधान आरए

0

आप rails_admin

See link

object_label_method उपयोगकर्ता मॉडल के लिए उपयोग कर सकते हैं rails_admin.rb में, में क्षेत्र के लिए लेबल कॉन्फ़िगर करने के लिए है

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

मॉडल में विधि

बनाने
def custom_label_method 
    "User #{user_name}" 
end