我正在使用此对帐系统,用户可以在其中选择导入记录时要使用的字段。我终于让选择预先填充了正确的信息,但不能在我的生活中获得复选框来做同样的事情。这是我的表格:
#views/match_rule/edit.html.erb
<%= form_for(@match_rules) do |f| %>
<%= f.label :name, "Name" %>
<%= f.text_field :name, placeholder: "Rule Set Name" %>
<%= f.label :algorithm, "Choose an algorithm" %>
<%= f.select :algorithm, build_algorithm_select_options %>
<%= f.label :match_fields, "Available fields" %>
<% @field_options.each do |field| %>
<%= f.check_box :match_fields %>
<%= f.label :match_fields, "#{field.last}" %><br/>
<% end %>
<%= f.submit "Save", class: "button primary" %>
<%= link_to "Cancel", match_rule_index_path, class: "button" %>
<% end %>
目前相应的控制器只是构建字段的哈希值,以免混淆代码使视图混乱
#controllers/match_rule_controller.rb
def edit
@field_options = {
name: "Name",
email: "Email",
phone: "Phone Number",
gender: "Gender",
marital_status: "Marital Status",
dob: "Date of Birth",
campus: "Campus",
address: "Street Address",
city: "City",
state: "State",
zip: "Zip"
}
end
我的模型正在序列化字段
#models/match_rule.rb
class MatchRule < ActiveRecord::Base
has_many :inboxes
enum algorithm: [ :adjustable, :classic_minimal, :classic_standard ]
serialize :match_fields
end
我的数据库字段存储了应填充match_fields列中复选框的所有选项
如果有必要了解我如何使用数组播种数据库,那么:
#db/seeds.rb
classic_minimal = MatchRule.create(algorithm: 'classic_minimal', match_fields: ['name', 'email', 'phone', 'gender', 'zip'], name: 'Classic Minimal')
classic_standard = MatchRule.create(algorithm: 'classic_standard', match_fields: ['name', 'email', 'phone', 'gender', 'marital_status', 'dob', 'campus', 'address', 'city', 'state', 'zip'], name: 'Classic Standard')
adjustable = MatchRule.create(algorithm: 'adjustable', match_fields: ['name', 'phone', 'campus', 'marital_status', 'zip'], name: 'Adjustable')
我在这里检查了类似的问题,最接近帮助我取得突破的是这个问题的答案:Set checkboxes on edit method in Rails 4他说要使用.include?确定检查状态,但我不确定我会在params中放入什么,因为我需要解析match_fields中每个字段的哈希值,这样会非常粗糙。
非常感谢任何建议或指导,谢谢!
更新 更新!尝试使用fields_for但仍未发布或填充。
<%= f.label :match_fields, "Available fields" %>
<%= fields_for :match_fields do |field| %>
<%= field.check_box :name %>
<%= field.label :name, "Name" %><br/>
<%= field.check_box :email %>
<%= field.label :email, "Email" %><br/>
<%= field.check_box :phone %>
<%= field.label :phone, "Phone" %><br/>
<% end %>
现在当我在控制台中检查更新时的params时,它说:
"match_fields" => {
"name" => "1",
"email" => "1",
"phone" => "0"
},
但实际上没有张贴或填充。
答案 0 :(得分:0)
想出来。
href
你必须通过.include?选项哈希中的方法。现在我只需要找到一种更清晰的方法将它放在视图中。