如何将许多相似的方法和视图组合为一个

彼得·阮

我想将类似的方法和视图合并为一个,但仍保留url名称,如下所示:

Home/recommends/categories/shopping
Home/recommends/categories/nightview
Home/recommends/categories/food
Home/recommends/categories/area

我不想"?something=xyz"在url中使用参数

routes.rb

resources :recommends, only: :index do
  collection do
    resources :categories, only: :show, controller: 'recommends' do
      collection do
        get :food
        get :area
        get :shopping
        get :nightview
      end
    end
  end
end

在控制器中:

def food
  set_paginator
  @recommends = UserRecommend.where(category: "food").order('created_at desc').offset(@offset).limit(@limit).all
  @number_of_recommends = UserRecommend.where(category: "food").count
end

def area
  set_paginator
  @recommends = UserRecommend.where(category: "area").order('created_at desc').offset(@offset).limit(@limit).all
  @number_of_recommends = UserRecommend.where(category: "area").count
end

...

在意见上,我有:

food.html.slim
area.html.slim
shopping.slim
nightview.slim

哪些使用相同的代码,只是在中使用不同的名称h1

h1
  | Shopping ( or Area or Food... )
  = " (#{@number_of_recommends})"

= render partial: "layouts/paginator",
  locals: { total_items: @number_of_recommends, per_page: @limit, current_page: @page }

= render partial: "table", locals: { recommends: @recommends }

谁能帮我重构此代码?

米加尔

您可以(并且应该)拥有一条路线,一个动作和一个视图。关键是使URL的可变部分成为实际的变量您可以使用动态细分进行此操作

首先,一条路线。resources如果您实际上没有生成多个RESTful动作,则无需使用

get "/recommends/categories/:category" => "categories#show"

您可以在:category细分中允许的条件上添加条件

get "/recommends/categories/:category" => "categories#show", category: /food|area|shopping|nightview/

接下来,一个动作:

class CategoriesController < ApplicationController
  before_action :set_paginator

  def show
    # params[:category] is "food"/"area"/etc
    categories = UserRecommend.where(category: params[:category]).order('created_at desc')
    @recommends = categories.offset(@offset).limit(@limit)
    @number_of_recommends = categories.count
  end
end

最后,一个视图:

# app/views/categories/show.slim
h1
  = params[:category].capitalize
  = " (#{@number_of_recommends})"

= render partial: "layouts/paginator",
  locals: { total_items: @number_of_recommends, per_page: @limit, current_page: @page }

= render partial: "table", locals: { recommends: @recommends }

我认为使用本地化将变成params[:category]标题更好,这将给您更多的控制权,而不是依赖于URL段的简单大写:

# app/views/categories/show.slim
h1
  = t params[:category]

和:

# config/locals/en.yml
en:
  categories:
    show:
      food: 'Food'
      area: 'Area'
      nightview: 'Night View'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将许多相似的方法和视图组合为一个

来自分类Dev

一个查询许多相似的表

来自分类Dev

如何将类似的Java函数组合为一个(在C ++中,我将使用模板)

来自分类Dev

有没有一种方法可以使用ggplot将两个相似的图例组合为一个简单的图例?

来自分类Dev

SQL联接和MS Access-如何将多个表组合为一个?

来自分类Dev

如何将系列和熊猫的数据框组合为一个数据框?

来自分类Dev

将嵌套视图和多个视图组合为一个状态

来自分类Dev

SQL联接和MS Access-如何将多个表组合为一个表?

来自分类Dev

如何将一个字符串和变量组合为新变量

来自分类Dev

如何将两个不同的拼写组合为一个

来自分类Dev

我如何将两个相似的PHP代码合并为一个?

来自分类Dev

如何将多个CSS类选择器组合为一个?

来自分类Dev

如何将多个sed命令组合为一个

来自分类Dev

如何将多个功能组合为一个功能?

来自分类Dev

如何将多个类别变量重新组合为一个新变量

来自分类Dev

如何将多个矩阵重新组合为一个大矩阵

来自分类Dev

如何将一个键与数组组合为值?

来自分类Dev

如何将相似的类组合在一起或使其成为一个函数?

来自分类Dev

如何将一个dataframe列的describe()的几个结果组合为一个dataframe?

来自分类Dev

如何将两个变量组合为一个变量以获得大熊猫总数?

来自分类Dev

SQLite:如果操作相同,如何将两个触发器组合为一个?

来自分类Dev

如何将两种(或多种)特征组合为一个最终特征以建立分类模型?

来自分类Dev

如何将许多javascript类的功能组合到一个对象中

来自分类Dev

NLP分类标签具有许多相似之处,仅替换一个

来自分类Dev

Windbg语法-将两个命令(MASM和C ++)组合为一个

来自分类Dev

将两个存储过程(选择和更新)组合为一个

来自分类Dev

将两个for循环组合为一个

来自分类Dev

C#Task.WaitAll()如何将对象状态组合为一个?

来自分类Dev

在GeoJson文件中,如何将要素(状态)组合为一个要素(区域)

Related 相关文章

  1. 1

    如何将许多相似的方法和视图组合为一个

  2. 2

    一个查询许多相似的表

  3. 3

    如何将类似的Java函数组合为一个(在C ++中,我将使用模板)

  4. 4

    有没有一种方法可以使用ggplot将两个相似的图例组合为一个简单的图例?

  5. 5

    SQL联接和MS Access-如何将多个表组合为一个?

  6. 6

    如何将系列和熊猫的数据框组合为一个数据框?

  7. 7

    将嵌套视图和多个视图组合为一个状态

  8. 8

    SQL联接和MS Access-如何将多个表组合为一个表?

  9. 9

    如何将一个字符串和变量组合为新变量

  10. 10

    如何将两个不同的拼写组合为一个

  11. 11

    我如何将两个相似的PHP代码合并为一个?

  12. 12

    如何将多个CSS类选择器组合为一个?

  13. 13

    如何将多个sed命令组合为一个

  14. 14

    如何将多个功能组合为一个功能?

  15. 15

    如何将多个类别变量重新组合为一个新变量

  16. 16

    如何将多个矩阵重新组合为一个大矩阵

  17. 17

    如何将一个键与数组组合为值?

  18. 18

    如何将相似的类组合在一起或使其成为一个函数?

  19. 19

    如何将一个dataframe列的describe()的几个结果组合为一个dataframe?

  20. 20

    如何将两个变量组合为一个变量以获得大熊猫总数?

  21. 21

    SQLite:如果操作相同,如何将两个触发器组合为一个?

  22. 22

    如何将两种(或多种)特征组合为一个最终特征以建立分类模型?

  23. 23

    如何将许多javascript类的功能组合到一个对象中

  24. 24

    NLP分类标签具有许多相似之处,仅替换一个

  25. 25

    Windbg语法-将两个命令(MASM和C ++)组合为一个

  26. 26

    将两个存储过程(选择和更新)组合为一个

  27. 27

    将两个for循环组合为一个

  28. 28

    C#Task.WaitAll()如何将对象状态组合为一个?

  29. 29

    在GeoJson文件中,如何将要素(状态)组合为一个要素(区域)

热门标签

归档