首页 > 解决方案 > 用户保存的数据使复选框的初始值

问题描述

背景

在我的应用程序中,用户可以从复选框中选择他们能够在个人资料编辑页面(users/edit.html.erb)上使用的多种语言。多对多关系已经写好了,所以可以正确保存多条数据。

现在,当用户返回他们的个人资料编辑页面时,所有复选框都显示为空白。我想显示用户选择并保存的“选中”语言。

用户/edit.html.erb

<li>
 <div class="col-1">Spoken languages:</div>
   <div class="col-2">      
     <label><input type="checkbox" name="language[]" value="1">Japanese</label>
     <label><input type="checkbox" name="language[]" value="2">English</label>
     <label><input type="checkbox" name="language[]" value="3">Chinese</label>
     <label><input type="checkbox" name="language[]" value="4">Spanish</label>
  </div>    
</li> 

我试图做的

我搜索了这种功能,但我只找到了如何制作特定的初始值(such as always check "English")。如果有人给我建议,我将不胜感激。

版本

红宝石 2.6.4p104 RubyGems 3.0.3 Rails 5.2.3

标签: rubycheckboxruby-on-rails-5

解决方案


我能够用 include 方法弄清楚。非常感谢。

<label><input type="checkbox" name="language[]" value="1" <%= "checked='checked'" if @user.language_ids.include?(1) %>>Japanese</label>
<label><input type="checkbox" name="language[]" value="2" <%= "checked='checked'" if @user.language_ids.include?(2) %>>English</label>
<label><input type="checkbox" name="language[]" value="3" <%= "checked='checked'" if @user.language_ids.include?(3) %>>Chinese</label>
<label><input type="checkbox" name="language[]" value="4" <%= "checked='checked'" if @user.language_ids.include?(4) %>>Spanish</label>

推荐阅读