我正在使用一个练习应用程序,其中一个元素是用户has_many WorkoutTypes(代码中的WoType)(通过has_many:through关系),我想构建一个表单将每个WorkoutType中的多个添加到给定用户。
我目前有一个复选框表单,用于向用户添加单个不同的子项:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
...
...
<div class="field">
<%= hidden_field_tag "user[wo_type_ids][]", nil %>
<%= WoType.all.each do |wo_type| %>
<%= check_box_tag "user[wo_type_ids][]", wo_type.id, @user.wo_type_ids.include?(wo_type.id), id: dom_id(wo_type) %>
<%= label_tag dom_id(wo_type), wo_type.wo %><br>
<% end %>
</div>
...
...
<div class="actions">
<%= f.submit "Update" %>
</div>
<% end %>
这意味着用户可以编辑他们的帐户以选择其中一个,例如跑步,健身房,足球;但是,我希望他们能够选择尽可能多的人(即用户有三次&#39;运行&#39;)。知道如何更新表单来实现这个吗?
以下是模型的删节代码:
class User < ActiveRecord::Base
has_many :wo_types, through: :wocfgs
has_many :wocfgs, dependent: :destroy
end
class WoType < ActiveRecord::Base
has_many :wocfgs
has_many :users, through: :wocfgs
end
class Wocfg < ActiveRecord::Base
belongs_to :user
belongs_to :wo_type
end
奖励积分:复选框当前正在视图中打印其下方的所有WorkoutTypes,我不知道为什么。任何线索如何摆脱这将是伟大的!我无法发布图片,因为我没有代表,但这里有截图链接:http://i.imgur.com/Zb72JVQ.png。
提前致谢!
答案 0 :(得分:0)
奖励积分问题首先:<%= WoType.all.each do |wo_type| %>
应为<% WoType.all.each do |wo_type| %>
。 =
打印循环后的所有内容。
关于主要问题:我使用Nested form来完成您正在做的事情。嵌套表单允许您将更多的每个复选框添加到列表中(通过JavaScript),因此在提交时,您可以使用多个&#34;运行&#34;已选中复选框。我想一个缺点是每个复选框后都会有链接,这可能看起来不是最好的。