我的rails应用程序中有以下设置: 用户注册并从音乐风格的一组复选框中选择。
音乐风格现在只有4种,但应该是可扩展的。我希望有一个MusicStyles列表,我可以轻松扩展和更改。
我的方法是创建一个模型'MusicStyles'和一个模型'UserMusicStyles',然后使用类似于:
的has_many_through关联class User < ActiveRecord::Base
has_many :user_music_styles
has_many :music_styles, :through => :user_music_styles
end
class UserMusicStyle < ActiveRecord::Base
belongs_to :user
belongs_to :music_style
end
class MusicStyle < ActiveRecord::Base
has_many :music_styles
has_many :users, :through => :user_music_styles
end
现在,在注册期间我会做类似MusicStyle.all.each do | m |的事情...显示复选框,但如何在用户控制器中正确保存到数据库?
非常感谢任何帮助!
答案 0 :(得分:0)
你可以这样做:
<%= form_for @user do |f| %>
<!-- User stuff -->
...
<% MusicStyle.all.each do |m| %>
<%= check_box_tag('user[music_style_ids][]', m.id, @user.music_styles.include?(m)) %>
<% end %>
<%= f.submit 'Save' %>
<% end %>