Rails 请教一个路由的问题:RESTful 里自定义路由的如何指定参数?

scige · 2012年11月04日 · 最后由 woaigithub 回复于 2012年11月05日 · 2326 次阅读

我想让 http://xxxx/filters/category/1 用下面的 Controller 处理

class FiltersController < ApplicationController
    def category
        @category = Category.find_by_id(params[:id])
    end
end

于是使用了下面的 Routes

resources :filters do
  collection do
      get :category
  end
end

我在 View 里是这么用的:

%a{:href => category_filters_path(@category)}
  = @category.cn_name
  %span>= "(#{@category.products.size})"

但是却生成了 http://xxxx/filters/category.1 然后就出错了,这种在 RESTful 里自定义路由的如何指定参数?

顺便问一下,haml 里用 link_to 能在文字里使用 span 吗?上面 view 的代码三行能合并为一行吗?

  • routes 应该用 member block

    resources :filters do
    member do
      get :category
    end
    end
    
  • View 代码写法可以做如下改进

    =link_to "#{@category.cn_name}<span>(#{@category.products.size})</span>".html_safe, category_filters_path(@category)
    

match 'filters/category' => 'filters/category'

需要 登录 后方可回复, 如果你还没有账号请 注册新账号