我需要在bootstrap工具提示中显示动态记录。 我可以在bootstrap工具提示中使用HTML,但在使用Ruby代码时会出错。我的代码示例如下
"<a data-toggle='tooltip' data-placement='right' data-html='true' data-original-title='
<h5>Title for #{label} file</h5>
<% users.each do |user| %>
<div class=row>
<div class=col-sm-6>
#{user.name}
</div>
<div class=col-sm-6>
<div class=rectangle id=#{status}>
#{user.id)}
</div>
</div>
</div>
<%end%>'
href='/link'>Right tooltip</a>"
如果未使用users.each
循环,则此代码中的一切正常。
如果使用它我收到错误
NameError:未定义的局部变量或方法'user'。
虽然用户拥有所有记录。问题是它没有识别Ruby语法。
答案 0 :(得分:1)
并且该方法在视图中被调用为
的值<td>
看起来像这样,我想?
<td><%= decorator.bootstrap_html %></td>
所以你必须自己通过ERB。像这样:
<td><%= ERB.new(decorator.bootstrap_html).result(binding) %></td>
或者可能是应该这样做的装饰者。只需确保您的users
在范围内,并使用正确的ERB #{user.name}
替换<%= user.name %>
。
答案 1 :(得分:1)
ERB.new("<a data-toggle='tooltip' data-placement='right' data-html='true' data-original-title='
<h5>Title for #{label} file</h5>
<% users.each do |user| @user = user %>
<div class=row>
<div class=col-sm-6>
<%= @user.name %>
</div>
<div class=col-sm-6>
<div class=rectangle id=#{@user.status}>
<%= @user.id %>
</div>
</div>
</div>
<%end%>'
href='/link'>Right tooltip</a>").result(binding)
这是工作代码。