Forum: Ruby on Rails Relationships In Partials

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pieter M. (Guest)
on 2007-02-04 20:36
I have two object classes:

class Feature < ActiveRecord::Base
  belongs_to :featureable, :polymorphic => true
  belongs_to :feature_type
end

class FeatureType < ActiveRecord::Base
  has_many :features
end

I then have a partials which I'm using to iterate out a collection:

# part of the action from the controller
def show_template
    @product_template = ProductTemplate.find(params[:id])
    @features = @product_template.features
end

# from the view
<%= render :partial => "feature", :collection => @features, :locals =>
removeButton => true } %>

#the partial
<%= @features.feature_type.name %>, id= <%= feature.id %>

<% if addBut %>
    <%= button_to "Add", :action => "add_feature_to_product", :feature
=> feature, :product => @product_template %>
<% end %>

<% if remBut %>
    <%= button_to "Remove", :action => "remove_feature_from_product",
:id => feature %>
<% end %>

When I run all this i get the following error:
undefined method `feature_type' for Feature:Class

I've tried the following in the console and it works fine there:
>> name = features.first.feature_type.name
=> "Graphic Design"

Does anyone know why it won't access the feature's feature_type object
inside the partial?
Ian Z. (Guest)
on 2007-02-05 05:49
(Received via mailing list)
Shouldn't your partial use this code:

<%= feature.feature_type.name %>

instead of

<%= @features.feature_type.name %>

@features (if it's even available in the partial, don't think it is
but i'm not sure without testing it) is an array.
@features.feature_type is wrong. When you are testing it in the
console, you are referencing features.first, which is fine.

On Feb 4, 1:36 pm, Pieter M. <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.