2009-06-23 22 views
10

ठीक है मुझे यकीन है कि मुझे यहां कुछ याद आ रहा है, लेकिन कृपया मुझे माफ़ कर दो मैं रेल के लिए नया हूं।रेल - सभी क्षेत्रों को देखने के लिए आसान तरीका

क्या रेल में प्रत्येक को निर्दिष्ट करने के बजाय किसी ऑब्जेक्ट के लिए सभी फ़ील्ड प्रदर्शित करने का कोई तरीका है?

मेरी show.html टेम्पलेट के बजाय

<p>Name: <%=h @user.full_name %></p> 
<p>Email: <%=h @user.email %></p> 

जा रहा में मैं सिर्फ एक oneliner 15 या तो खेतों मेरे पास है में से प्रत्येक के बाहर लिखे बिना ऐसा करना चाहते हैं। यह एक व्यवस्थापक पृष्ठ है, तो यह ठीक है अगर सभी फ़ील्ड्स दिखाए जाते हैं (आईडी, create_at, आदि) यदि यह PHP था तो मुझे फोरैच का उपयोग करके लगभग 5 सेकंड ले जाएगा, लेकिन मैंने गुम हो गया है (गलत चीजों पर स्पष्ट रूप से) बिना किसी किस्मत के एक घंटे।

धन्यवाद!

उत्तर

32

कुछ की तरह

<% for attribute in @user.attributes.keys %> 
    <p><%= attribute.humanize %> <%= @user.attributes[attribute].to_s %></p> 
<% end %> 

चाल कर सकता है।

मैट

+0

धन्यवाद! वास्तव में मैं भी क्या चाहता था! । हुमानीज हुह! मुझे लगता है कि मुझे अपने बच्चों के लिए कभी-कभी – Michael

+0

अच्छी चाल, रेल, हमेशा <3 – Unitech

+2

प्यार है! मैं [0 नाम ',' आयु ',' आदि 'में विशेषता के लिए '<% का उपयोग कर समाप्त हुआ]%>' केवल उन फ़ील्ड को दिखाने के लिए जिन्हें मैं दिखाना चाहता हूं। – DavidG

4

मुझे लगता है कि आप डेटाबेस तालिका से एक पंक्ति के सभी विशेषताओं को प्रदर्शित करना चाहते हैं जिसे ActiveRecord मॉडल के रूप में परिभाषित किया गया है। आप क्लास विधि कॉलम_नाम (प्रत्येक ActiveRecord मॉडल में यह) का उपयोग कर सकते हैं, जो किसी सरणी में तालिका कॉलम के नाम लौटाता है।

<%= User.column_names.collect { |col_name| "#{col_name.capitalize}: <p>#{@user[col_name]}</p>" }.join("\n") %> 
+0

धन्यवाद! वास्तव में मैं क्या चाहता था! – Michael

0
@user.attributes.each{|key, value| puts "#{key} : #{value}"} 
0

यह टुकड़ा मैं कुछ गुण मैं दिखाने के लिए नहीं करना चाहता था ब्लैकलिस्ट करने के लिए इस्तेमाल किया ...

नियंत्रक (user_controller.rb)

def show 

    keys_blacklist = %W(user_id name) #these are the fields to hide 
    @user_showlist = @user.attributes.except(*keys_blacklist) 

end 
है

देखें (show.html.erb):

<!-- language: ruby --><% for attribute in @user_showlist.keys %> 

    <b><%= attribute.humanize %></b> 
    <%= @user.attributes[attribute].to_s %> 
<!-- language: ruby --><% end %> 

तुम भी बजाय का उपयोग कर सकते हैं:

@user_showlist = @user.attributes.slice(*keys_whitelist) 

आदेश संपत्तियों की एक whilelist प्रदर्शित करने के लिए।

2
<%= debug @user %> 

ऑब्जेक्ट दिखाने के लिए सरल तरीका ... यही वह है जो मैं आमतौर पर वैसे भी उपयोग करता हूं!

0

आप haml विशेषताओं के माध्यम से के लिए उदाहरण के किसी उपभोक्ता वस्तु एक दृश्य में उपयोग कर रहे हैं और चाहते हैं पाश करने के लिए:

- for attribute in @user.attributes.keys 
    %p 
    = attribute.humanize 
    = @user.attributes[attribute].to_s 
संबंधित मुद्दे