在这里,我有10列,即表answer1, answer2, answer3, ..., answer10
中的MgAnswer
。
我必须检查每个列值是否存在。只有它存在,然后我必须在页面中显示它。
我在for循环中动态地给出列名
<% (1..10).each do |i| %>
<% if MgAnswer."answer#{i}".present? %>
<%= MgAnswer."answer#{i}" %>
<% end %>
<% end %>
我以语法错误结束。
答案 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
条件,因为它将被评估为空字符串""
。