0

这很难解释。

我有一个表单构建器(问题模型),它创建属于特定事件的表单字段,这些问题出现在注册模型处理的注册页面上。

有一些默认表单字段始终保持不变,然后由表单构建器创建 X 个附加字段。Question 模型具有字段“db_field”,该字段由 Registration 模型中的相应 db 字段填充。

请注意,这些问题也有 position_ids。

我想要实现的是在索引页面的表格中的相应标题下显示答案,我的视图看起来像这样

<% @questions = Question.where(:event_id => @event.id).order(:position) %>

<table class="table table-striped table-bordered table-condensed">
  <tr>
    <% @questions.each do |q| %>
      <th><%= q.question %></th>
    <% end %>
  </tr>
  <% @event.registrations.each do |r| %>
    <tr>
      <% @questions.each do |q| %>
        <td><%= r.(q.db_field) %></td>
      <% end %>
    </td>
</table>

所以基本上我需要'q.db_field',例如,它可能是'title'来调用r.title - 如果这有意义的话。

我已经尝试了一些东西,但似乎没有任何效果。

在此先感谢,查尔

4

1 回答 1

0

您可以使用Object#send来调用给定对象的方法。

有关详细信息,请参阅http://ruby-doc.org/core-2.0/Object.html

因此替换<%= r.(q.db_field) %><%= r.send(q.db_field) %> 将允许您使用数据库中的字段名称。如果需要为被调用的方法指定参数,可以在方法名之后传入。根据文档,方法名称可以是符号或字符串,如果是字符串,它将为您转换为符号。

于 2013-07-10T12:47:56.083 回答