Rails表单:如何为新用户和现有用户设置不同的默认值?

时间:2012-09-25 14:06:10

标签: ruby-on-rails controller many-to-many relationship

我有一个允许用户注册的Rails应用程序。用户可以拥有他们想要遵循的多种音乐风格(多对多关联)。

现在,当新用户访问表单时,他应该默认选中所有音乐风格。但是当现有用户回来时(在编辑页面上使用相同的表单),他应该只检查那些为他的个人资料启用的音乐风格。我假设必须在控制器中设置,但如何为新用户设置所有音乐风格?

以下是表单中的代码:

<% MusicStyle.all.each do |m| %>
  <%= check_box_tag('user[music_style_ids][]', m.id, @user.music_styles.include?(m)) %>
  <label for="<%= m.id %>"><%= m.name %></label><br/>
<% end %>

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

创建@user时,您可以将所有音乐风格添加到您构建的新记录中。这将导致您的表单正确填充。

或者,您可以使用@user.new_record?来确定这是否是新记录,并根据该记录生成复选框标记。