Adding New Column

I added a new column using a migration. Once I updated the new.html.erb, edit.html.erb, show.html.erb, and the index.html.erb I brought up my web pages. There was a field to update show. I tried the update and the it was successful but the update did not show up in any of the other pages. What did I miss? I am using 2.3.3 of ror.

You missed posting the source...

Lets have a look at edit and show views

The table I am working with is contacts. The new column is type. I changed the edit.html.erb source by adding.

<p>   <%= f.label :type %><br />   <%= f.text_field :type %> </p>

In the show.html.erb I added

<p>     <b>Type:</b>     <%=h @contact.type %. </p>

What else do I need to post the source...

I think the problem is with the name of the column, :type. It's a reserved. I read there is a way to use it, but I say it's really not worth it. Try dropping the column and adding it with different name. Should work.

Sorry, I didn't understand what you meant by post your code. I snapped, finally. Here it is. Thanks for your help. Again the table is contacts and the field I added is type.

edt.html.erb

<h1>Editing contact</h1>

<% form_for(@contact) do |f| %>   <%= f.error_messages %>

  <p>     <%= f.label :user_id %><br />     <%= f.text_field :user_id %>   </p>   <p>     <%= f.label :is_owner %><br />     <%= f.check_box :is_owner %>   </p>   <p>     <%= f.label :first_name %><br />     <%= f.text_field :first_name %>   </p>   <p>     <%= f.label :mid_init %><br />     <%= f.text_field :mid_init %>   </p>   <p>     <%= f.label :last_name %><br />     <%= f.text_field :last_name %>   </p>   <p>     <%= f.label :title %><br />     <%= f.text_field :title %>   </p>   <p>     <%= f.label :company %><br />     <%= f.text_field :company %>   </p>   <p>     <%= f.label :phone %><br />     <%= f.text_field :phone %>   </p>   <p>     <%= f.label :email %><br />     <%= f.text_field :email %>   </p>   <p>     <%= f.label :logo %><br />     <%= f.text_field :logo %>   </p>   <p>     <%= f.label :type %><br />     <%= f.text_field :type %>   </p>   <p>     <%= f.submit "Update" %>   </p> <% end %>

<%= link_to 'Show', @contact %> | <%= link_to 'Back', contacts_path %>

show.html.erb

<p>   <b>User:</b>   <%=h @contact.user_id %> </p>

<p>   <b>Is owner:</b>   <%=h @contact.is_owner %> </p>

<p>   <b>First name:</b>   <%=h @contact.first_name %> </p>

<p>   <b>Mid init:</b>   <%=h @contact.mid_init %> </p>

<p>   <b>Last name:</b>   <%=h @contact.last_name %> </p>

<p>   <b>Title:</b>   <%=h @contact.title %> </p>

<p>   <b>Company:</b>   <%=h @contact.company %> </p>

<p>   <b>Phone:</b>   <%=h @contact.phone %> </p>

<p>   <b>Email:</b>   <%=h @contact.email %> </p>

<p>   <b>Logo:</b>   <%=h @contact.logo %> </p>

<p>   <b>Type:</b>   <%=h @contact.type %> </p>

<%= link_to 'Edit', edit_contact_path(@contact) %> | <%= link_to 'Back', contacts_path %>

Thank you. I removed type and created a new field. Everything is working great thanks for your help.

For future reference a list of words to avoid can be found at http://wiki.rubyonrails.org/rails/pages/ReservedWords

Colin

Bashar Abdullah wrote:

I think the problem is with the name of the column, :type. It's a reserved.

Just to clarify, ActiveRecord assumes a column named type is used for Single Table Inheritance. You can configure the model to tell ActiveRecord to use a different column name for that purpose, which would then allow you to use a column named :type. But, the simpler solution is to avoid using :type.

techtimer: glad it helped

Colin Law & Robert Walker: Thanks for the tips. I recall now reading about the STI.