Rails中的DRY控制器和视图

时间:2013-11-06 12:56:52

标签: ruby-on-rails mongoid

假设我有HABTM关系的模型ArticleCategory。我可以使用mobiledesktop等名称来设置不同的类别。我需要每个类别的列表视图。例如,/mobile路径为我提供Articles所有属于Category mobile/desktop路径的所有Articles属于类别desktop和{{1}路径完全给我/articles。组织它的最佳方式是什么(控制器,视图,路线)?对于每个类别创建控制器?但它不是DRY ......用户以后可能会添加类别......

2 个答案:

答案 0 :(得分:1)

无需创建其他控制器。

class ArticlesController
  def index
    @articles = case params[:type]
    when 'mobile'
      # .. select mobile articles
    when 'desktop'
      # .. select desktop articles
    else
      Article.all
    end

    # ...
  end
end

然后在routes.rb

match "/mobile", controller: :articles, action: :index, type: 'mobile'
match "/desktop", controller: :articles, action: :index, type: 'desktop'

resources :articles

答案 1 :(得分:1)

路线:

get 'category/:type' => 'categories#index'

控制器:

def index
  type = params[:type]


  ## fetch categories based on type
  categories = Category.where(type: type)
end

您需要查看的基本内容是路线。只添加一个路径,可以适用于任意数量的类别类型