0

我有一个带有两个不同过滤选项的事件页面。一个按“句号”过滤,另一个按“标签”过滤。

period过滤器通过 GET 请求执行,过滤tag器使用表单来发布其值。

定义的路线events

resources :events
post 'tags/(:tag)', to: 'events#index', as: :tag
get 'events(/period/:period)', to: 'events#index', as: :events_period

我的标签过滤使用tag_path提交自己:

<%= form_tag tag_path, method: :post, do %>  

index这两个过滤动作都由EventsController.

我想要做的是记住过滤periodwhile 过滤 for tags。换句话说,当 url/period/pastmeh标签被选中时,我想同时应用这两个过滤选项。

我可以将表单提交到当前 url 还是应该更改路由tag_path以包含period过滤器?

4

2 回答 2

0

您可以将隐藏period字段添加到您的标签表单并使用您当前的过滤选项填充它。之后,您将在控制器的 params[:period] 中获得过滤选项。这种方法不需要更改您的路线。

于 2013-09-08T17:38:46.270 回答
0

已经有一段时间了,但我曾经overwrite_params使用url_for. 因此,如果您在给定页面上,您可以让链接使用与当前存在的参数相同的页面,并且只更改您想要更改的参数。然而,这似乎在 Rails 3 中已被弃用。但您仍然可以像这样手动执行此操作:

<%= link_to 'Add the meh filter', url_for(params.merge(tag_name: 'meh')) %>
于 2013-09-08T18:36:38.450 回答