【问题标题】:Rails Bootstrap text inside <div> in a <td> cell not wrapping<td> 单元格中 <div> 内的 Rails Bootstrap 文本不换行
【发布时间】:2018-04-28 02:01:47
【问题描述】:

我有一张表,其中列出了一些哈希元素。我想为列表中的每个项目添加一个换行符,但如果该项目很长并且超出表格单元格的右边缘,它就会从页面上消失。我想包装任何溢出。我的 ERB 文件如下所示:

<table id="audit_trail_table" class="table table-striped table-bordered dataTable" cellspacing="0" role="grid" aria-describedby="audit_trail_table">
  <thead>
  <tr>
    <th class="text-center col-sm-2">Date</th>
    <th class="text-center col-sm-1">User</th>
    <th class="text-center col-sm-1">Item</th>
    <th class="text-center col-sm-1">Action</th>
    <th class="text-center">Changes</th>
  </tr>
  </thead>

  <tbody>
  <% @audits.each do |audit| %>
    <tr>
      <td><%= audit.created_at.strftime("%F@%T") %></td>
      <td><%= "#{audit.first_name} #{audit.last_name}" %></td>
      <td><%= audit.auditable_type.titleize %></td>
      <td><%= audit.action.titleize %></td>
      <td>
        <% audit.audited_changes.each do |key,value| %>
          <div><%= "#{key.to_s} : #{value.to_s}" %></div>
      <% end %>
      </td>
    </tr>
  <% end %>
  </tbody>
</table>

这是生成的 HTML:

<table id="audit_trail_table" class="table table-striped table-bordered dataTable no-footer" cellspacing="0" role="grid" aria-describedby="audit_trail_table_info">
  <thead>
  <tr role="row"><th class="text-center col-sm-2 sorting_desc" tabindex="0" aria-controls="audit_trail_table" rowspan="1" colspan="1" aria-sort="descending" aria-label="Date: activate to sort column ascending" style="width: 148px;">Date</th><th class="text-center col-sm-1 sorting" tabindex="0" aria-controls="audit_trail_table" rowspan="1" colspan="1" aria-label="User: activate to sort column ascending" style="width: 55px;">User</th><th class="text-center col-sm-1 sorting" tabindex="0" aria-controls="audit_trail_table" rowspan="1" colspan="1" aria-label="Item: activate to sort column ascending" style="width: 55px;">Item</th><th class="text-center col-sm-1 sorting" tabindex="0" aria-controls="audit_trail_table" rowspan="1" colspan="1" aria-label="Action: activate to sort column ascending" style="width: 55px;">Action</th><th class="text-center sorting" tabindex="0" aria-controls="audit_trail_table" rowspan="1" colspan="1" aria-label="Changes: activate to sort column ascending" style="width: 613px;">Changes</th></tr>
  </thead>

  <tbody>
   <tr role="row" class="odd">
      <td class="sorting_1">2018-04-27@18:34:44</td>
      <td>Andrew Reilly</td>
      <td>Cleaning</td>
      <td>Update</td>
      <td>
          <div>cleaning_date : [nil, "2018-04-27"]</div>
      </td>
    </tr>
    <tr role="row" class="even">
      <td class="sorting_1">2018-04-27@18:34:07</td>
      <td> firefighter</td>
      <td>Cleaning</td>
      <td>Create</td>
      <td>
          <div>notes : testing audits</div>
          <div>ppe_id : 14</div>
          <div>user_id : 5</div>
          <div>advanced : false</div>
          <div>cleaning_date : </div>
          <div>failed_inspection : false</div>
      </td>
    </tr>
    <tr role="row" class="odd">
      <td class="sorting_1">2018-04-27@18:33:25</td>
      <td> firefighter</td>
      <td>Inspection</td>
      <td>Create</td>
      <td>
          <div>passed : true</div>
          <div>ppe_id : 16</div>
          <div>results : {"serial"=&gt;"10011", "soiled"=&gt;"pass", "assigned_to"=&gt;"firefighter, ", "contaminated"=&gt;"pass", "inspection_date"=&gt;"2018-04-27", "loss_of_face_opening_adjustment"=&gt;"pass", "reflective_trim_missing_damaged"=&gt;"pass", "shell_physical_damage_seam_integrity"=&gt;"pass", "shell_physical_damage_thermal_damage"=&gt;"pass", "ear_flaps_physical_damage_thermal_damage"=&gt;"pass", "ear_flaps_physical_damage_rips_tears_cuts"=&gt;"pass", "face_shield_goggle_damage_or_missing_components"=&gt;"pass", "suspension_retention_system_damage_or_missing_components"=&gt;"pass", "shell_physical_damage_cracked_crazing_dents_and_abrasions"=&gt;"pass"}</div>
          <div>user_id : 5</div>
          <div>advanced : false</div>
      </td>
    </tr>
    <tr role="row" class="even">
      <td class="sorting_1">2018-04-23@18:06:09</td>
      <td>Andrew Reilly</td>
      <td>Ppe</td>
      <td>Update</td>
      <td>
          <div>user_id : [1, 24]</div>
      </td>

    </tr>
  </tbody>
</table>

生成如下表格:

results 行偏离右侧。我可以让它横向滚动,但宁愿让它包裹文本。每个键/值行都在它自己的 div 内。我尝试在各个地方(div、td 等)添加各种版本的 word-wrapoverflow-wrap

&lt;td&gt; 中使用&lt;div&gt; 标记的原因是,这是我能想出的将每个键/值对放在一行中的唯一方法。如果有更好的方法来获取我想要的换行符并在单个项目中进行换行。任何想法都表示赞赏。

【问题讨论】:

  • table-layout: fixed 对您有帮助吗? jsfiddle.net/938L9gwb/1
  • 不,没有任何变化。我正在使用 Bootstrap 3.2,所以不确定这是否重要。我从你的 jsfiddle 添加了样式,它没有改变。我会提到,我已经阅读了大多数类似这样的问题,我可以在 SO 上找到这些问题,并且像这样的简单修复没有奏效。
  • 我注意到,如果我删除 &lt;div&gt; 标记并将其替换为行尾的 &lt;br&gt; 标记,它至少会在工具提示框中显示环绕的文本,在至少在 Safari 上。

标签: html css ruby-on-rails


【解决方案1】:

原来我专注于错误的事情。在我所有继承的 CSS 中,元素 white-space: 可能设置为 no-wrap。我只是这样设置&lt;td&gt; 的样式:

<td style="white-space: initial; overflow: auto">

现在它运行良好。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2013-12-29
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多