根据模式迭代模型的字段

时间:2014-01-21 04:13:35

标签: ruby-on-rails

我的模型有以下字段:x1,y1,z1,x2,y2,z2,...,xn,yn,zn

我想迭代字段,以便在每次迭代中,我想得到这些:xN,yN,zN。有没有办法做到这一点?目的是我不想手动为这些字段编写表单。

3 个答案:

答案 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 %

在上述情况下,所有字段都将以无特定顺序列在表单中。