Rails 用于类别选择的多个复选框
Rails multiple checkbox for category selection
我有一个创建事件的表单,还有一个类别 selection
的模型
事件模型由
给出
class Event < ActiveRecord::Base
belongs_to :category
end
我在事件迁移中有 t.belongs_to :category
,我在类别迁移中有 t.string :name
我这样做是为了 select 事件的单个类别
但现在我还想 select 事件的多重兴趣和它们的名称必须从类别 table 中获取,以便将 category_id 存储在另一列中(兴趣)对事件 table。
我这样做是为了找到属于同一类别的用户(我还在用户中包含了类别ID table)
请告诉我怎么做?提前致谢
更新 1 - 实际上我想存储对事件类别的兴趣,比如事件属于艺术类别,它需要找到属于艺术的用户和其他事件、商业、科学等....这是活动的兴趣
更新 2 - 这样在它的显示视图中,我可以获取用户和属于事件感兴趣的类别的其他事件
执行此操作有点棘手,但有可能:
型号
在您的模型中添加:
class Event < ActiveRecord::Base
serialize :interests
end
查看
鉴于 @categories
包含所有类别,您可以像这样勾选兴趣复选框(将其放在您的活动视图中):
<tbody>
<% @categories.each do |category| %>
<tr>
<td><%= check_box_tag "interests[]", category.id %></td>
</tr>
<% end %>
</tbody>
控制器
提交表格后,您将收到以下格式的表格:
"interests[]"=>["3", "4", "5"]
您可以使用 params[:event][:interests]
或 params[:interests]
来达到这些值,具体取决于表单是否被换行。当您 post 表单时,您可以在终端中检查参数。
在第一种情况下,结果将自动发送到模型,但在第二种情况下,您只有 params[:interests]
,您需要在创建时手动分配它们,如下所示:
@event.interests = params[:interests]
无论哪种方式,您都试图在列中获取一个数组,因此您需要对其进行序列化。这就是模型中有 serialize
的原因。此外,您必须将列值作为 text
(t.text) ,而不是字符串。
理论上,每次到达 Event.interests 时,您都会得到一个数组,您可以使用 each
对其进行迭代
我有一个创建事件的表单,还有一个类别 selection
的模型事件模型由
给出class Event < ActiveRecord::Base
belongs_to :category
end
我在事件迁移中有 t.belongs_to :category
,我在类别迁移中有 t.string :name
我这样做是为了 select 事件的单个类别
但现在我还想 select 事件的多重兴趣和它们的名称必须从类别 table 中获取,以便将 category_id 存储在另一列中(兴趣)对事件 table。
我这样做是为了找到属于同一类别的用户(我还在用户中包含了类别ID table)
请告诉我怎么做?提前致谢
更新 1 - 实际上我想存储对事件类别的兴趣,比如事件属于艺术类别,它需要找到属于艺术的用户和其他事件、商业、科学等....这是活动的兴趣
更新 2 - 这样在它的显示视图中,我可以获取用户和属于事件感兴趣的类别的其他事件
执行此操作有点棘手,但有可能:
型号
在您的模型中添加:
class Event < ActiveRecord::Base
serialize :interests
end
查看
鉴于 @categories
包含所有类别,您可以像这样勾选兴趣复选框(将其放在您的活动视图中):
<tbody>
<% @categories.each do |category| %>
<tr>
<td><%= check_box_tag "interests[]", category.id %></td>
</tr>
<% end %>
</tbody>
控制器
提交表格后,您将收到以下格式的表格:
"interests[]"=>["3", "4", "5"]
您可以使用 params[:event][:interests]
或 params[:interests]
来达到这些值,具体取决于表单是否被换行。当您 post 表单时,您可以在终端中检查参数。
在第一种情况下,结果将自动发送到模型,但在第二种情况下,您只有 params[:interests]
,您需要在创建时手动分配它们,如下所示:
@event.interests = params[:interests]
无论哪种方式,您都试图在列中获取一个数组,因此您需要对其进行序列化。这就是模型中有 serialize
的原因。此外,您必须将列值作为 text
(t.text) ,而不是字符串。
理论上,每次到达 Event.interests 时,您都会得到一个数组,您可以使用 each