Bootstrap Rails,为内容索引添加分页

时间:2016-05-11 04:59:07

标签: css ruby-on-rails twitter-bootstrap

我有这个由Rails自动生成的列表。它列出了我的数据库的内容,我想引导它,添加分页和一些不错的CSS。

<p id="notice"><%= notice %></p>

<h1>Listing Posts</h1>

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Title</th>
      <th>Content</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @posts.each do |post| %>
      <tr>
        <td><%= post.name %></td>
        <td><%= post.title %></td>
        <td><%= post.content %></td>
        <td><%= link_to 'Show', post %></td>
        <td><%= link_to 'Edit', edit_post_path(post) %></td>
        <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Post', new_post_path %>

此表单显示在生成的控制器中的index.html.erb中。

在这种生成的文件中添加一些CSS的最快方法是什么?我已经在相应的.scss文件中导入了Bootstrap,但是真的有必要在任何地方手动定义bootstrap类吗?

我不能用一些漂亮的宝石欺骗吗?

3 个答案:

答案 0 :(得分:1)

使用table类,如:

<table class="table"> 

并使用will_paginate bootstrap作为分页。这是链接https://github.com/bootstrap-ruby/will_paginate-bootstrap

答案 1 :(得分:1)

一个不错的是kaminari宝石。安装它,

在你的控制器中,你可以这样做,

@posts = Post.page(params[:page]).per(10)

其中page()接受显示的第n个页面和per(),在一个页面中显示多少个帖子。在你的观点中,简单的把

<%= render @posts %><!-- You can wrap it with a table and bootstrap classes -->
<%= paginate @posts %><!-- At the end of the page. This will take care of pagination -->

对于渲染帖子,kaminari默认按惯例查找部分_post.html.erb,在views / posts /

  <tr>
    <td><%= post.name %></td>
    <td><%= post.title %></td>
    <td><%= post.content %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>

将包含您的帖子内容。请记住,在部分帖子中,您引用的是post而不是@post

答案 2 :(得分:1)

据我所知,没有任何宝石会在你的模板中注入样式。

最简单的解决方案是自己添加引导样式。如果您想要相同的基本结构应用程序,并且您计划使用生成器,则可以自定义相应的模板。

您可以将自定义模板放在lib/templates/TEMPLATE_ENGINE/GENERATOR_NAME/VIEW_NAME.html.ext

例如,要覆盖rails的scaffold生成器的haml视图,您可以创建以下文件:

lib
├── tasks
└── templates
    ├── haml
    │   └── scaffold
    │       ├── _form.html.haml
    │       ├── edit.html.haml
    │       ├── index.html.haml
    │       ├── new.html.haml
    │       └── show.html.haml

有关自定义生成器的详细信息,请参阅guide

您只需要替换要自定义的视图的模板。

一种可以加速rails应用程序启动的方法:自定义表单生成器。这将允许您以熟悉的方式编写表单并为您添加引导程序样板。 simple_form是一个很好的资源。

如果您已经创建/生成了多个视图,则可能更容易手动添加样式。

就分页而言,kaminari似乎是最近的热门,您可以轻松自定义视图(或者可能使用gem来自定义它们)。

请记住,自定义生成器模板,配置simple_form和配置分页可能比简单地手动添加样式更有效。但是,它可以带来长期回报(特别是如果你刚刚开始一个大型项目)。