2011-02-09 11 views
5

मेरे पास एक form_for है और मैं चाहता हूं कि x.textField के अंदर कोई भी मान उपकेस में पहले अक्षर के साथ दिखाई दे (मैं उस संपादन के बारे में बात कर रहा हूं जहां टेक्स्टफील्ड डीबी मानों से पहले से भर चुके हैं)।पूंजीकरण f.text_field

उत्तर

6

आप इस तरह यह भुनाने कर सकते हैं:

<%= form_for ... do |f| %> 
    <%= f.text_field :name, :value => f.object.name.capitalize %> 
2

पान Thomakos के समाधान के लिए काम करेंगे, लेकिन अगर आप फार्म पर हर पाठ क्षेत्र के लिए :value => f.object.name.capitalize जोड़ने के लिए नहीं करना चाहते हैं, तो आप लेखन पर गौर कर सकता है आपके स्वयं फॉर्मबिल्डर।

, अपनी लोड पथ में इस कहीं रखो lib/capitalizing_form_builder.rb तरह

class CapitalizingFormBuilder < ActionView::Helpers::FormBuilder 

    def text_field(method, options = {}) 
    @object || @template_object.instance_variable_get("@#{@object_name}") 

    options['value'] = @object.send(method).to_s.capitalize 

    @template.send(
     "text_field", 
     @object_name, 
     method, 
     objectify_options(options)) 
    super 
    end 

end 

उपयोग:

<% form_for(@post, :builder => CapitalizingFormBuilder) do |f| %> 

    <p> 
    <%= f.text_field :title %> 
    </p> 
    <p> 
    <%= f.text_field :description %> 
    </p> 
    <p> 
    <%= f.submit 'Update' %> 
    </p> 

<% end %> 
0

आप भी इस

नीचे दिए गए के रूप में की तरह नियंत्रक के बनाने/अद्यतन कार्रवाई में क्या कर सकते हैं
def create 

    @user = User.new(params[:user]) 
    @user.name = params[:user][:name].capitalize 

    if @user.save 
    #do something 
    else 
    #do something else 
    end 

end 
+0

हतोत्साहित किया जाता है, के बाद से खेतों परिवर्तन तर्क मॉडल में रखा जाना चाहिए: "पतली नियंत्रकों, वसा मॉडल" – caesarsol

+1

आप सही लेकिन यहाँ सादगी सिर्फ विचार है कि आप कैसे कर सकते हैं भुनाने की व्याख्या है कर रहे हैं। यही कारण है कि चीजों को एक पूरी तस्वीर के रूप में एक साथ रखना बेहतर है कि क्या हो रहा है! –

3

आप इसे सीएसएस के साथ कर सकते हैं ...

= f.text_field :some_attribute, style: 'text-transform: capitalize;'

इस
संबंधित मुद्दे