Rails 4.2路由:params的深度和动态默认值?

时间:2015-10-07 15:29:31

标签: ruby-on-rails routing

我希望重用控制器,同时为不同的资源维护漂亮的链接。

让我们说系统中有文章,用户和评论。

注释控制器索引操作采用名为filter_params的哈希参数并进行过滤。因此,如果params[:filter_params][:user_id]的值为1,则会显示ID为1的用户的所有评论。与文章和article_id类似。

我正在寻找的是让以下路线有效:

  1. /users/1/commentscomments#index,参数{ filter_params: { user_id: 1 } }
  2. /articles/1/commentscomments#index,参数{ filter_params: { article_id: 1 } }
  3. /articles/1/comments?filter_params[user_id]=1comments#index,参数{ filter_params: { article_id: 1, user_id: 1 } }
  4. 我最初的想法是对路由使用defaults选项并在那里构造默认的filter_params。但这似乎只接受静态哈希而不是proc我可以访问请求。最重要的是,它不适用于第三个示例,因为默认值无法被覆盖,随后?filter_params[user_id]=1将被忽略。

    那么有没有办法让它只与路由器一起工作?或者我应该放弃并在before_filter中创建一个CommentsControllerparams[:user_id]params[:article_id]填充params[:filter_params]

0 个答案:

没有答案