All,
I have spent the last 6hrs trying to change the default, size="30",
that is returned as a result of f.text_field... helper call. I wanted
the default width to be ''16'' for my application.
I am using Rails 3.0.3 and Ruby 1.8.7.
I have tried the following:
1. Adding this line in config/environment.rb:
ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS = { "size"
=>
16 }
After doing this, the console yields the following:
irb(main):004:0> puts
ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"]
16
=>nil
additionally, the following line in a partial...
<% ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"]
%>
produces a static ''16'' in the generated source
However...
The following html source code is rendered in my views:
<input id="party_names_attributes_0_surname"
name="party[names_attributes][0][surname]" size="30"
type="text"
value="SomeText" />
2. Next I created a plugin file ''vender/plugins/default_options/lib/
default_options.rb'' (also created the requisite
''init.rb''):
module ActionView
module Helpers
class InstanceTag
DEFAULT_FIELD_OPTIONS = { "size" => 16 }
end
end
end
This modification affects the value stored in
ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"] but
not the results of f.text_field.
3. Finally I was able to accomplish the desired results by modifying
my plugin as follows:
module ActionView
module Helpers
class InstanceTag
DEFAULT_FIELD_OPTIONS = { "size" => 16 }
def to_input_field_tag(field_type, options = {})
options = options.stringify_keys
puts "here"
options["size"] = options["maxlength"] ||
DEFAULT_FIELD_OPTIONS["size"] unless options.key?("size")
options = DEFAULT_FIELD_OPTIONS.merge(options)
if field_type == "hidden"
options.delete("size")
end
options["type"] ||= field_type
options["value"] = options.fetch("value")
{ value_before_type_cast(object) } unless field_type == "file"
options["value"] &&=
ERB::Util.html_escape(options["value"])
add_default_name_and_id(options)
tag("input", options)
end
end
end
end
Surely I am missing something. What is the ''one-line'' trick
to
setting the default size= option for a text_field?
Thanks
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
On Feb 5, 8:09 pm, jh744 <jhamil...-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> wrote:> All, > > I have spent the last 6hrs trying to change the default, size="30", > that is returned as a result of f.text_field... helper call. I wanted > the default width to be ''16'' for my application.> > This modification affects the value stored in > ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"] but > not the results of f.text_field. >Looking at the source, it would appear that the existing DEFAULT_FIELD_OPTIONS is in ActionView::Helpers::InstanceTagMethods not ActionView::Helpers::InstanceTag (or was the above a typo?) Fred -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks for looking at this Fred. You are correct. DEFAULT_FIELD_OPTIONS is indeed defined in InstanceTagMethods. However... below the module InstanceTagMethods class InstanceTag is defined as follows: class InstanceTag include InstanceTagMethods end I actually located it after some searching on google and using the tab- completion in console to arrive at: ActionView::Helpers::InstanceTag::DEFAULT<tab> ... ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS ActionView::Helpers::InstanceTag::DEFAULT_RADIO_OPTIONS ActionView::Helpers::InstanceTag::DEFAULT_TEXT_AREA_OPTIONS Redefining ActionView::Helpers::InstanceTagMethods::DEFAULT_FIELD_OPTIONS in either environment.rb or in vendor/plugins/default_options/lib/ default_options.rb effects the change that I am looking for but in both cases I get warning like the following... work/rails/codata/vendor/plugins/default_options/lib/ default_options.rb:4: warning: already initialized constant DEFAULT_FIELD_OPTIONS or work/rails/codata/config/environment.rb:5: warning: already initialized constant DEFAULT_FIELD_OPTIONS If I ''modify the constant'' as shown in my original post I don''t get these warnings. On Feb 5, 5:59 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Feb 5, 8:09 pm, jh744 <jhamil...-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> wrote: > > > All, > > > I have spent the last 6hrs trying to change the default, size="30", > > that is returned as a result of f.text_field... helper call. I wanted > > the default width to be ''16'' for my application. > > > This modification affects the value stored in > > ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"] but > > not the results of f.text_field. > > Looking at the source, it would appear that the existing > DEFAULT_FIELD_OPTIONS is in ActionView::Helpers::InstanceTagMethods > not ActionView::Helpers::InstanceTag (or was the above a typo?) > > Fred-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Feb 9, 4:32 am, jh744 <jhamil...-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> wrote:> work/rails/codata/vendor/plugins/default_options/lib/ > default_options.rb:4: warning: already initialized constant > DEFAULT_FIELD_OPTIONS > or > work/rails/codata/config/environment.rb:5: warning: already > initialized constant DEFAULT_FIELD_OPTIONS > > If I ''modify the constant'' as shown in my original post I don''t get > these warnings.Your original method was just creating some random new constant. Now you are actually redefining the constant, so you get a warning about it (There''s a silence_warning method) Fred> > On Feb 5, 5:59 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > > > > On Feb 5, 8:09 pm, jh744 <jhamil...-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> wrote: > > > > All, > > > > I have spent the last 6hrs trying to change the default, size="30", > > > that is returned as a result of f.text_field... helper call. I wanted > > > the default width to be ''16'' for my application. > > > > This modification affects the value stored in > > > ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"] but > > > not the results of f.text_field. > > > Looking at the source, it would appear that the existing > > DEFAULT_FIELD_OPTIONS is in ActionView::Helpers::InstanceTagMethods > > not ActionView::Helpers::InstanceTag (or was the above a typo?) > > > Fred-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.