1

我想让用户能够对显示在分页表中的许多选定(带复选框)项目进行通用操作。

我想知道当用户通过分页链接导航到其他表格页面时,我将如何跟踪前一个表格页面的选定项目。

我使用 kaminari 进行分页。

有任何想法吗?

4

2 回答 2

0

如果您使用任何形式,那么您可以使用多步形式。你可以从

http://railscasts.com/episodes/217-multistep-forms

但是请确保您需要以这种方法将表单对象存储在会话中,因此如果您在表单中设置了 500 个字段,那么 cookie 就会溢出。请查看您的申请,然后再决定。

于 2013-10-04T05:54:47.597 回答
0

您可以使用的一种方法是隐藏字段或只是一个 javascript 变量,每当用户选择/取消选择表中的项目时,您使用一些 javascript 更新该变量。

如果您的页面导航链接使用 AJAX 仅更新您的表格和导航链接,您的页面仍将包含所选项目的隐藏字段或变量。在表更新时,您还必须根据在隐藏字段或变量中选择的内容设置表项的选定状态。

是的,它不漂亮。

您可能需要考虑一些用于 SPA(单页应用程序)的客户端 MV* 框架,因为使用 ad-hoc javascript 很快就会变得混乱。

我指的 MV* 框架是 Backbone、Ember、Angular、Knockout、Batman 等。您的应用程序本质上变成了单个缩小的 javascript 资产、单个缩小的样式表,加上图像和客户端/服务器只是 AJAX/JSON api。这些框架为您的客户端代码提供结构,并支持将视图绑定到对象状态并与服务器同步。

正是客户端架构和原生移动应用程序的这种转变使得像 Sinatra 这样的极简服务器端框架越来越受欢迎,因为像 Rails(是的,我的意思是 Rails 4.0)这样的框架不再为开发现代 Web 提供“rails”或约定和移动应用程序。

查看 TodoMVC以比较 MV* 客户端框架,然后选择一个适合您的风格和要求的框架。在考虑了所有主要的之后,我的务实(和固执己见)的选择是 Backbone.js + Backbone.Marionette + Coffeescript,因为你根本不会被画到角落里。没有不尊重他人的意思。

我对 MV* 框架的建议是:

  • 对于使用声明性视图模板或在模板中放置逻辑的能力有限或没有能力,或者不支持嵌套/子模板的自以为是的框架要非常小心。如果没有这些功能,视图组合是一个挑战,并且呈现根据用户角色或计划/订阅或具有分层结构而变化的视图即使不是不可能也变得困难。我已经考虑过声明性模板意识形态,我喜欢理论,但现实会咬人。
  • 请注意您对与服务器同步的控制程度。您经常需要“侧载”相关对象,而您最不想看到的是将旧的 1 + N SQL 查询问题表现为 1 + N JSON 查询问题!
于 2013-10-04T14:38:53.540 回答