Hi! I have next
====== models
require ‘paperclip’
class User < ActiveRecord::Base
has_one :user_settings
end
class UserSettings < ActiveRecord::Base
has_one :habits_and_past
accepts_nested_attributes_for :habits_and_past
end
class HabitsAndPast < ActiveRecord::Base
has_and_belongs_to_many :musics
accepts_nested_attributes_for :musics
end
class Music < ActiveRecord::Base
has_and_belongs_to_many :habits_and_pasts
def display_name
“#{name}”
end
end
====== migrations
for all models
class HabitsAndPastsMusics < ActiveRecord::Migration
def self.up
create_table :habits_and_pasts_musics, :id => false do |t|
t.references :habits_and_past
t.references :music
end
end
def self.down
drop_table :habits_and_pasts_musics
end
end
====== in users_controller
def saveprofile
@user = User.find(params[:id])
@user_settings = UserSettings.new(params[:user_settings])
if @user_settings.save
flash[:notice] = ‘message’
render :action => “show”
else
render :action => “addprofile”
end
end
====== in add_profile.html.erb
<% form_for :user_settings, @user_settings,
:url=>{:action=>“saveprofile”} do |f|%>
<%f.hidden_field :user_id, :value => @user.id%>
<%= render :partial => “user_settings”, :locals => { :f => f, :button =>
“Submit”} %>
<% end %>
====== _user_settings.html.erb
…
<% f.fields_for :habits_and_past_attributes do |habit| %>
…
<%= label("user_settings[habits_and_past_attributes]", "musics_list" ,
"Musics") %>
<% Music.find(:all).each do |music| %>
<%=
check_box_tag("user_settings[habits_and_past_attributes][musics_list]
[#{music.id}]","1",false) %><%= "#{music.display_name}"%>
<% end %>
======== when I press submit I see error
ActiveRecord::UnknownAttributeError in UsersController#saveprofile
unknown attribute: musics_list
======= in params
“habits_and_past_attributes”=>{“favourite_book”=>"",
“favourite_group”=>"",
“favourite_film”=>"",
“musics_list”=>{“1”=>“1”,
“2”=>“1”},
I’m using rails 2.3.5
Question - How to save list of musics that was selected ?