首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记住checkbox状态Rails?

如何记住checkbox状态Rails?
EN

Stack Overflow用户
提问于 2019-09-23 18:30:11
回答 2查看 153关注 0票数 0

我的应用程序有一个技能列表可供选择。当你点击“保存”时,用户id和技能id会被记录在数据库中。

如果用户再次访问此页面,则会关闭所有复选框。

如何从数据库中进行检查,以使选中的复选框始终包含在视图中?

我的观点是:

代码语言:javascript
复制
= form_for(:skill_list, url: user_skill_list_index_path) do |f|
 %li
  = f.check_box(:a1, class: 'm-enabled')
  = f.label(:a1, 'Programming')
%li
  = f.check_box(:a2, class: 'm-enabled')
  = f.label(:a2, 'Communication')
%li
  = f.check_box(:a3, class: 'm-enabled')
  = f.label(:a3, 'Problem-solving')
%li
  = f.check_box(:a4, class: 'm-enabled')
  = f.label(:a4, 'Teamwork')
%li
  = f.check_box(:a5, class: 'm-enabled')
  = f.label(:a5, 'Creative')
%li
  = f.check_box(:a6, class: 'm-enabled')
  = f.label(:a6, 'Marketing')

我的控制器:

代码语言:javascript
复制
def create
  @skill_record = UserSkillList.where(user_id: current_user.id).first

  skill_params = params[:skill_list]
  skills = []

  skill_params.each do |k, v|
    if v == '1'
      id = k.dup
      id.slice!(0).to_i
      skills << id
    end
  end

  if @skill_record.blank?
    UserSkillList.create(user_id: current_user.id, skill_id: skills)
  else
    @skill_record.update_attributes(skill_id: skills)
  end
  redirect_to :back
end

我的数据库记录:

EN

回答 2

Stack Overflow用户

发布于 2019-09-23 18:39:16

Rails check_box

它接受2个参数checkedunchecked

例如,如果a1,a2,..是boolean字段,那么它应该是

代码语言:javascript
复制
= f.check_box :a1, {class: 'm-enabled'}, true, false

例如,如果a1,a2,..是任何string字段,那么它应该是

代码语言:javascript
复制
= f.check_box :a1, {class: 'm-enabled'}, "value-for-checked", "value-for-unchecked"  
票数 0
EN

Stack Overflow用户

发布于 2019-09-26 00:39:30

对每个技能(编程、通信等)使用UserSkillList表中的布尔值字段将会解决你的问题。在这种情况下,您将拥有一个可以引用这些布尔表列的form_for skillset对象。

然后这就可以工作了

代码语言:javascript
复制
= f.check_box(:programming, class: 'm-enabled')

如果你真的想要一个“技能列表”在数据库中,使用一个带有布尔值的散列,而不是一个数组。即{编程:真,通信:假等}。使用'text‘作为类型。

连接你的“序列号”和技能名称的唯一逻辑是创建技能数组的循环。所以,如果你在任何地方都找不到引用,它就不是真正的序列号。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58060438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档