I''ve started doing some form formatting in a _form.rhtml file and found that I was copying the sizes of the fields directly from the migrate create_ file into the _form.rhtml file for each field. Searching around for a DRYer example, I found a question and answer about maxlength. What''s the difference between size and maxlength in a view file? Is there a way to refer to the :limit property that is already set up for a field in the _form.rhtml file? For example, instead of <%= text_field ''person'', ''State'', ''size'' => 2 %> something like <%= text_field ''person'', ''State'', ''limit'' %> or even <%= text_field ''person'', ''State'', ''size'' = { some expression to retrieve the limit } %> Thanks, Shauna -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Hi Shauna, Shauna wrote:> > What''s the difference between size and > maxlength in a view file?''Size'' has to do with the visible size (sorry about that) of the form field. For example, if you set size = 5, the width of a text field will be 5 characters (as measured by the size of the text on the form, not necessarily of the text you''ll enter into the field which will typically be a smaller size than the font on the form). Size has nothing at all to do with how many characters you can enter into the field. Maxlength sets the number of characters that can be entered into a field. Size is an HTML attribute. Maxlength is, I believe, a javascript attribute (although I''d be surprised if ''attribute'' is the right word there). hth, Bill --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
On 9/19/06, Bill Walton <bill.walton-xwVYE8SWAR3R7s880joybQ@public.gmane.org> wrote:> > Hi Shauna, > > Shauna wrote: > > > > What''s the difference between size and > > maxlength in a view file? > > ''Size'' has to do with the visible size (sorry about that) of the form field. > For example, if you set size = 5, the width of a text field will be 5 > characters (as measured by the size of the text on the form, not necessarily > of the text you''ll enter into the field which will typically be a smaller > size than the font on the form). Size has nothing at all to do with how > many characters you can enter into the field. Maxlength sets the number of > characters that can be entered into a field. Size is an HTML attribute. > Maxlength is, I believe, a javascript attribute (although I''d be surprised > if ''attribute'' is the right word there)."maxlength" is also html. http://www.blooberry.com/indexdot/html/tagpages/i/inputtext.htm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Thanks for the answers re size vs. maxlength and for the link. I''m always looking for comprehensive documentation that is also readable, and I like the booberry site for that reason. I am already using the enforce_column_limits in my models, which means I can skip maxlength now that I know what it does. (I did test with and without maxlength to be sure of this.) I may have to revisit this once the forms are ajaxified but I think the model is the right place for this restriction. Now, can anyone come up with a DRYer method for designating the SIZE of the input field based on the model''s :limit''s for string fields? Shauna -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Shauna wrote: I am already using the> enforce_column_limits in my models, which means I can skip maxlength now > that I know what it does.I have been using maxlength in my forms too. I wasnt aware of enforce_column, probably best to use this, but even so, if you dont set maxlength in the form, then presumably you will get an error when the form is submitted, which will then require the user to edit the entry again. Surely it is best to avoid that step by not allowing overlength field input in the first place. Or am I missing something. Tony --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Shauna wrote:> Now, can anyone come up with a DRYer method for designating the SIZE of > the input field based on the model''s :limit''s for string fields?ActiveRecord''s column_for_attribute method returns a Column object for a given attribute. The Column object has a limit attribute reader. So I haven''t tested this, but give it a try... text_field ''person'', ''state'', ''size'' => Person.column_for_attribute(''state'').limit If you really want to DRY it, write a helper method in application_helper.rb to do this automatically (maybe capping the size at some value, or try a CSS max-width property). Same for maxlength. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
I''m finally getting back to this issue. To Tony: You are correct. maxlength doesn''t allow the user to type more than the allowed number of characters in the first place (whereas the enforce_column_limits plugin for the model only catches the error when trying to save the record). So I switched to using maxlength. To ASE: Thanks for this. After some minor fiddling, here''s what works: text_field ''person'', ''state'', ''size'' => @person.column_for_attribute(''state'').limit I did the same thing for ''maxlength'' = @person.column_for_attribute(''state'').limit This makes my _form.rhtml look awfully wordy, and I will have lots of _forms to do. But I''m really not skilled enough yet in RoR to visualize a helper method that applies both those tests automatically. How would I do this? And how would I call it from the _forms, or better yet, get it to apply to every text_field without having to explicitly call it? Thanks once again, Shauna -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---