我们正在尝试做的是在 a 中存储一段erb
代码string
,然后run time
在 erb 中渲染代码。
这是存储为字符串的 erb 代码块:
<tr>
<th>#</th>
<th><%= t('Date') %></th>
<th><%= t('Project Name') %></th>
<th><%= t('Task Name') %></th>
<th><%= t('Log') %></th>
<th><%= t('Entered By') %></th>
</tr>
<% @logs.each do |r| %>
<tr>
<td><%= r.id %></td>
<td><%= (r.created_at + 8.hours).strftime("%Y/%m/%d")%></td>
<td><%= prt(r, 'task.project.name') %></td>
<td><%= prt(r, 'task.task_template.task_definition.name') %></td>
<td><%= prt(r, :log) %></td>
<td><%= prt(r, 'last_updated_by.name') %></td>
</tr>
<% end %>
t() 是国际化的翻译方法。
我们如何将上面存储在字符串中的 erb 代码插入到下面的 erb 文件中以进行渲染(在伪代码中)?
<table class="table table-striped">
<% erb_code = retrieve(chunk_of_erb_code)%>
<% erb_code here for rendering %>
</table>
有解决问题的方法吗?感谢帮助。
更新:
工作代码render inline
(通过kamesh):
<% erb_code = find_config_const('task_log_view', 'projectx')%>
<%= render inline: ERB.new(erb_code).result(binding) %>
作为一种好的做法,可以将变量 erb_code 移到控制器中。