Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html RAILS:使用复选框和类别表将类别/主题保存给用户_Html_Ruby On Rails - Fatal编程技术网

Html RAILS:使用复选框和类别表将类别/主题保存给用户

Html RAILS:使用复选框和类别表将类别/主题保存给用户,html,ruby-on-rails,Html,Ruby On Rails,我想制作一个名为subject_types的表,并在其中填充不同的主题,如英语、西班牙语、历史。并将subjects表分配给每个用户。我希望用户能够选择一个复选框多个主题,它将保存这些具体的,并保持选中。每个用户都可以保存自己的首选项/服务。我正试图找出解决这个问题的最佳方法 下面是它的外观 在某种程度上,用户正在编辑他们的设置。我希望能够获取这些信息,并在以后使用它来查找只包含他们选择的主题类型的结果。是否有教程或类似的参考资料? -我应该建立主题类型模型并填充这些主题,还是有更好的方法 可

我想制作一个名为subject_types的表,并在其中填充不同的主题,如英语、西班牙语、历史。并将subjects表分配给每个用户。我希望用户能够选择一个复选框多个主题,它将保存这些具体的,并保持选中。每个用户都可以保存自己的首选项/服务。我正试图找出解决这个问题的最佳方法

下面是它的外观

在某种程度上,用户正在编辑他们的设置。我希望能够获取这些信息,并在以后使用它来查找只包含他们选择的主题类型的结果。是否有教程或类似的参考资料? -我应该建立主题类型模型并填充这些主题,还是有更好的方法

可能的解决办法

我可以在我的用户表的列中有一个数组吗?数组将是subjects表的id。我该怎么做?? 多谢各位

更新:


首先,通过使用以下命令,使用联接模型创建多对多关系:

我可以在我的用户表的列中有一个数组吗?阵列将是 主题表的ID。我该怎么做

你没有

即使例如Postgres允许您创建数组类型的列 这不是一个好的解决方案,因为这不是ActiveRecord中关联的工作方式


这也是一个蹩脚的关系数据库设计,因为通过数组列编写带有连接的查询很麻烦,而且它不允许您使用外键强制引用完整性,也不允许有良好的性能索引。

我收到了最后一个错误!当我单击“提交”时,我得不到任何路由匹配[PATCH]/users/51,我知道如何在routes.rb中路由它,但我想要最好的方法,到目前为止,您已经引导我走上了正确的道路。添加资源:users to routes.rb。不过,您似乎完全理解错了—您是通过更新父记录来创建关联的,而不是通过向WritingTypesController或其他什么发送请求来创建关联的。您的命名过于复杂和奇怪。好的,用户记录获取数据,它存储在哪里?我为我的用户使用Desive,所以在路由中我有一个带有路径名的Desive_。我正在考虑将集合复选框添加到我的设计/注册/编辑页面中,格式为:true do | f |%>。当我更新时,在编辑页面中它不会保存。当我返回时,复选框保持未选中状态。好的,那么用户记录获取数据,它存储在哪里ActiveRecord将通过插入/删除联接表中的行来自动创建/删除关联。请阅读Rails指南中关于关联的文章。我现在让它为用户工作,与Desive暂时分开。。我会找出设计的强参数谢谢!
class User < ApplicationRecord
  has_many :user_subjects
  has_many :subjects, through: :user_subjects
end

class Subject < ApplicationRecord
  has_many :user_subjects
  has_many :users, through: :user_subjects
end

# this is the join model
class UserSubject < ApplicationRecord
  belongs_to :user
  belongs_to :subject
end
<%= form_for(@user) do |f| %>
  <%= f.collection_checkboxes(:subject_ids, Subject.all, :id, :name) %>
  # ...
<% end %>