The string is nil.   I even created a new rails project to test this
out.

(Rails 3 / 1.9.2)

rails generate scaffold test value1:string value2:integer

app/models/test.rb
class Test < ActiveRecord::Base
  def value1
    read_attribute(:value1).nil? ? 'hello' : read_attribute(:value1)
  end
  def value2
    read_attribute(:value2).nil? ? 3 : read_attribute(:value2)
  end
end

app/views/tests/_form.html.erb
<%= form_for(@test) do |f| %>
  value 1 is <%= @test.value1.inspect %> and value 2 is <%=
@test.value2.inspect %>
<div class="field">
    <%= f.label :value1 %><br />
    <%= f.text_field :value1 %>
  </div>
  <div class="field">
    <%= f.label :value2 %><br />
    <%= f.select :value2, (1..10) %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

At the top of the form we see
value 1 is "hello" and value 2 is 3

the select statement has 3 selected but the text field has nothing.

Adding ':value => @test.value1' fixes the issue but shouldn't be
necessary AFAIK
<%= f.text_field :value1,  :value => @test.value1 %>


On Feb 11, 10:00 am, Jim Ruther Nill <jvn...@gmail.com> wrote:
> are you sure that heading is nil? could you double check if it's not an
> empty string?
>
> On Fri, Feb 11, 2011 at 9:50 PM, Tony Primerano 
> <tony.primer...@gmail.com>wrote:
>
>
>
>
>
> > On Feb 11, 8:45 am, Frederick Cheung <frederick.che...@gmail.com>
> > wrote:
> > > On Feb 11, 1:37 pm, Tony Primerano <tony.primer...@gmail.com> wrote:
>
> > > > I have a model and I set defaults for some values by overriding the
> > > > read accessor.  For example
>
> > > > def heading
> > > >     read_attribute(:heading).nil? ? 'Please select from:' :
> > > > read_attribute(:heading)
> > > > end
>
> > > Have you double checked this works by calling heading directly on the
> > > object in question?
>
> > yes.
>
> > This works
>
> > <%= f.text_field :heading,  :value => @site.heading %>
>
> > and if I set it in the controller it works fine too.
>
> > @site.heading = 'testing'
>
> > Maybe text_field is using read_attribute instead of calling the
> > method?
>
> > > Fred
>
> > > > The problem I have found is that text_field ignores this.
>
> > > >     <%= f.text_field :heading %>
>
> > > > is empty even when heading is nil
>
> > > > now I can easily add :value and it works
>
> > > >     <%= f.text_field :heading,  :value => @site.heading %>
>
> > > > but it seems like this shouldn't be necessary.   I also override read
> > > > accessors for values that I use in select statements on the same form
> > > > and it works fine.
>
> > > > def text_color
> > > >     read_attribute(:text_color).nil? ? SiteColors::TEXT_DEFAULT :
> > > > read_attribute(:text_color)
> > > > end
>
> > > > <%= f.select :text_color, SiteColors::COLORS%>
>
> > > > This picks up the default fine
>
> > > > Is this a bug in text_field or am I just doing something stupid?
>
> > > > 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@googlegroups.com.
> > To unsubscribe from this group, send email to
> > rubyonrails-talk+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> >http://groups.google.com/group/rubyonrails-talk?hl=en.
>
> --
> -------------------------------------------------------------
> visit my blog athttp://jimlabs.heroku.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@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to