在Airport
模型中我使用primary_key
作为机场国际代码,但Rails仍在请求中使用:id
。
我已在airport.rb
self.primary_key = 'code'
并在airports_controller.rb
def show
@airport = Airport.find(params[:code])
end
但是当我试图获得domain.com/airports/led
时,我会收到:
无法找到没有身份证的机场
在请求参数中我有
{"action"=>"show", "controller"=>"airports", "id"=>"led"}
如果我将控制器params[:code]
更改为params[:id]
它可以正常工作,但我不想以这种方式使用它,因为我没有id
DB中的列。
答案 0 :(得分:9)
当您在Rails 4中声明路由时,可以使用:param
选项覆盖默认资源标识:id
:
resources :airports, param: :code
这应该会产生以下URI模式:
/airports/:code(.:format)
因此,您可以使用params[:code]
从控制器访问该细分受众群。