通过读取yaml文件在rails中创建表单

我正在尝试通过读取yml文件来创建表单。 我能够正确读取文件,但我不确定如何将哈希中的项正确放入创建表单的代码中。 例如,我的yml文件读取类似的内容

- f.label: :email f.email_field: :email - f.label: :name f.text_field: :name 

我像这样读取控制器中的yml文件

 @form_format = YAML::load(File.open('public/grant.yml')) 

而我视图中的代码就是这样的

          

我知道这是位不正确但我不知道如何让它读取,例如从散列中的值。

我试图解决这个问题的总体原因是因为我需要创建许多(100多个)独特的表单,我认为我能做到这一点的最好方法是在每个表单的yml文件中创建一个唯一的“模式”阅读架构以创建字段。 如果还有其他方法可以做得更好,我会全力以赴。 我对RoR很新,但我已经广泛搜索并且没有找到太多。 谢谢!

你非常接近! 但是,如果您的YAML只是label而不是f.label ,这会更容易,如下所示:

 - label: :email email_field: :email - label: :name text_field: :name 

一旦你加载了这个YAML,你将拥有一个如下所示的Ruby数组:

 [ { "label" => "email", "email_field" => "email" }, { "label" => "name", "text_field" => "name" } ] 

诀窍在于,对于每个哈希,我们可以使用键作为方法名称来发送到f对象。

假设您已将数组分配给控制器中的@form_format ,它在您的视图中将如下所示:

 <%= form_for(:submission, url: submissions_path) do |f| %> <% @form_format.each do |item| %> <% item.each do |type, name| %> <%= f.send(type, name) %> <% end %> <% end %> ... <% end %>