我的模型有以下字段:x1,y1,z1,x2,y2,z2,...,xn,yn,zn
我想迭代字段,以便在每次迭代中,我想得到这些:xN,yN,zN。有没有办法做到这一点?目的是我不想手动为这些字段编写表单。
答案 0 :(得分:0)
懒惰!
Model.find(1) = @model
form_for @model do |f|
@attributes = @model.attributes.except("x1", "y1", "z1") *and so on.*
以上内容返回一个哈希值,然后您可以在表单中执行以下操作。
@attributes.each_key do |key|
f.text_field key.to_sym
end
答案 1 :(得分:0)
ruby
中的一个简单迭代,演示了一种简单的方法:
chars = ['x', 'y', 'z']
numbers = [1, 2, 3, 4, 5]
chars.each do |char|
numbers.each do |number|
puts "#{char}#{number}"
end
end
此日志:
x1 x2 x3 x4 x5 y1 .....
可让您访问字段。
希望有所帮助。
答案 2 :(得分:0)
假设你有x1,y1,z1..x10,y10,z10,如果你需要所有字段的文本框,你可以像这样写你的表格
<%(1..10).each do |n|%>
<%=f.text_field "x#{n}".to_sym %>
<%=f.text_field "y#{n}".to_sym %>
<%=f.text_field "z#{n}".to_sym %>
<%end%>
如果您不关心属性的顺序,那么
<% @object.attributes.keys.each do |attribute| %>
<%=f.text_field attribute.to_sym %>
<% end %
在上述情况下,所有字段都将以无特定顺序列在表单中。