这很难解释。
我有一个表单构建器(问题模型),它创建属于特定事件的表单字段,这些问题出现在注册模型处理的注册页面上。
默认表单字段始终保持不变,然后是表单构建器创建的X个附加表单字段。问题模型具有“db_field”字段,该字段将填充注册模型中的相应数据库字段。
请注意,问题也有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 - 如果这是有道理的。
我尝试了一些事情,但似乎没有任何效果。
提前致谢, 查尔
答案 0 :(得分:0)
您可以使用Object#send
来调用给定对象上的方法。
有关详细信息,请参阅http://ruby-doc.org/core-2.0/Object.html。
所以用<%= r.(q.db_field) %>
替换<%= r.send(q.db_field) %>
将允许您使用数据库中的字段名称。如果需要为被调用的方法指定参数,可以在方法名称后面传入它们。根据文档,方法名称可以是符号或字符串,如果是字符串,它将被转换为符号。