Colin, thanks for your response. I have moved a bit further on my original
problem of updating the through table.

I now have in my *controller*:

def new
    @style = Style.new
    @style.stylefeatures.build
    @features = Feature.all
end

def create
    @style = Style.new(params[:style])
    @style.stylefeatures.build
    @style.save
end

...and in my *style* *model*
*
*
  attr_accessible :stylefeatures_attributes
  has_many :stylefeatures
  has_many :features, :through => :stylefeatures, :foreign_key =>
:feature_id
  accepts_nested_attributes_for :stylefeatures

... and in my *stylefeature model*

  belongs_to :style
  belongs_to :feature
  accepts_nested_attributes_for :feature

... and in my *feature model*

  attr_accessible :description, :fullname, :name
  has_many :stylefeatures
  has_many :styles, :through => :stylefeatures, :foreign_key => :style_id

... and in my *create form*

    <%= m.simple_fields_for :stylefeatures do |p| %>
      <%= p.input :feature_id, :label => "Features", :collection =>
@features, :input_html => { :multiple => true } %>
    <% end %>

Now when I save the new Style, the stylefeatures table is updated with the
appropriate style_id, but with two useless entries. The first is an array
with all of the feature ids which have been selected in the form. The
second is a blank entry with the appropriate style_id and nothing in the
feature_id column.

Do you have any clue of what I might be doing wrong, or how to spread the
collected feature_id's into the table as desired?

Thanks,
Abram



On Mon, May 21, 2012 at 9:15 AM, Colin Law <clan...@googlemail.com> wrote:

> On 20 May 2012 21:01, Abram <funkdif...@gmail.com> wrote:
> > I have a form used to create a 'Style'. The style may have any number of
> > 'features' which correspond to 'Feature' models in the features table. I
> > would like to add the appropriate entries to a relationship table
> > ('stylefeatures') whenever a Style is created. Here is a breakdown of my
> > models:
> >
> > class Style < ActiveRecord::Base
> >
> >
> >   has_many :stylefeatures
> >
> >
> >   has_many :features, :through => :stylefeatures, :foreign_key =>
> > :feature_id
> >
> >
> >   accepts_nested_attributes_for :stylefeatures
> >
> >
> > end
> >
> >
> >
> > class Feature < ActiveRecord::Base
> >
> >
> >   has_many :stylefeatures
> >
> >
> >   has_many :styles, :through => :stylefeatures, :foreign_key => :style_id
> >
> >
> > end
> >
> >
> >
> > class Stylefeature < ActiveRecord::Base
> >
> >
> >   belongs_to :style
> >
> >
> >   belongs_to :feature
> >
> >
> >   accepts_nested_attributes_for :features
>
> I don't know whether this is part or all of the problem, but you can't
> have :features here as it is belongs_to, so it should be singular (if
> you need it at all).
>
> By the way please don't post html, or at least not complex html, it
> makes the reply quoting very messy as you can see.
>
>
> Colin
>
> >
> >
> > end
> >
> >
> > ...and here is my controller for the 'new' action:
> >
> >   def new
> >
> >
> >     @style = Style.new
> >
> >
> >     @features = Feature.all
> >
> >
> >   end
> >
> >
> > ...and here is my form:
> >
> > <%= simple_form_for @style, :html => { :class => 'form-horizontal' } do
> |m|
> > %>
> >
> >
> >   <%= m.simple_fields_for :features do |p| %>
> >
> >
> >     <%= p.input :name, :label => "Features", :collection => @features,
> > :input_html => { :multiple => true } %>
> >
> >
> >   <% end %>
> >
> >
> >   [....]
> > <% end %>
> >
> >
> > Right, so the list of features DOES load up into the multiple select box
> > within my form. So that's sweet. However, when I go to submit I receive
> the
> > error: No association found for name 'features'. Has it been defined yet?
> >
> > I get the exact same error when adding @style.features.build to the
> > controller 'new' action.
> >
> > This is what the params hash looks like. It carries the ID of the feature
> > name selected.
> >
> > "features"=>{"name"=>["","7"]}
> >
> >
> > So my question is, how do I go about loading the features listed in the
> > features table for the nested form, and on form submission, handle the
> > selected features for addition to the stylefeatures relationship table.
> >
> > Thanks very much
> >
> > --
> > 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.
>
> --
> 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.
>
>

-- 
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