如何在Bootstrap工具提示标题中使用Ruby语法?

时间:2017-10-26 11:08:21

标签: ruby-on-rails ruby bootstrap-4

我需要在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语法。

2 个答案:

答案 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)

这是工作代码。