1

我的 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| 之类的事情。...显示复选框,但如何在用户控制器中正确地将其保存到数据库中?

非常感谢任何帮助!

4

1 回答 1

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 %>
于 2012-08-29T07:13:55.867 回答