Rails to_param自定义路由不起作用

时间:2012-05-22 03:02:54

标签: ruby-on-rails ruby routes

在Rails 3.2.2中,我想设置自定义URL(使用状态2位:abbr,而不是默认值:id)

阅读谷歌搜索结果和stackoverflow页面,我想出了这个:

路线

match 'cars/:abbr' => 'states#show', :as => 'state_abbr'

模型

def to_param
  abbr
end

控制器

@state = State.find_by_abbr(params[:id])

状态#show页面抛出错误(nil:NilClass的未定义方法`fullname'),因为路由似乎没有在模型中找到 abbr

运行佣金路线,我得到:

 root  /                    states#index
 state_abbr  /cars/:abbr(.:format) states#show

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您想使用params[:abbr]而不是params[:id]。如果您想使用:id将路线改为'cars/:id'而不是'cars/:abbr'