动态显示列值

时间:2016-04-28 14:57:53

标签: ruby-on-rails ruby

在这里,我有10列,即表answer1, answer2, answer3, ..., answer10中的MgAnswer。 我必须检查每个列值是否存在。只有它存在,然后我必须在页面中显示它。

我在for循环中动态地给出列名

<% (1..10).each do |i| %>
   <% if MgAnswer."answer#{i}".present? %>
      <%= MgAnswer."answer#{i}" %>
   <% end %>
<% end %>

我以语法错误结束。

2 个答案:

答案 0 :(得分:3)

你确实可以在ruby中动态调用方法,但这不是语法。而是做

<% (1..10).each do |i| %>
  <% if MgAnswer.public_send("answer#{i}").present? %>
    <%= MgAnswer.public_send("answer#{i}") %>
  <% end %>
<% end %>

答案 1 :(得分:2)

它应该如下所示:

<% (1..10).each do |i| %>
  <%= MgAnswer.send("answer#{i}") %>
<% end %>

因为ruby无法将行评估为MgAnswer."method"。您也可以跳过if条件,因为它将被评估为空字符串""