我有一个FormQuestion模型,它将form_for标记存储为字符串。 我希望得到以下内容:
<%= form_for(application_form) do |f| %>
<% FormQuestion.all.each do |q| %>
<%= q.input %> #where q.input = "f.text_field :name"
<% end %>
<% end %>
如何从q.input返回的字符串被解释为form_for ruby标记,而不是简单地在页面上作为文本打印?
编辑:
建议eval(q.input)
,但我正在寻找更安全的替代方案
答案 0 :(得分:0)
您可以使用send方法:
<%= form_for(application_form) do |f| %>
<% FormQuestion.all.each do |q| %>
<%= f.send(q.input) %> #where q.input = "f.text_field :name"
<% end %>
<% end %>
答案 1 :(得分:0)
我会将此更改为:
<%= form_for(application_form) do |f| %>
<% FormQuestion.all.each do |q| %>
<% f.send q.type, q.name %> #where q.type = :text_field and q.name = :name
<% end %>
<% end %>
否则:
<%= form_for(application_form) do |f| %>
<% FormQuestion.all.each do |q| %>
<%= raw q.as_html %> # where q.as_html = "<input name="name"></input>"
<% end %>
<% end %>