更改 :id 默认资源标识符
Change :id default resource identifier
在 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
时,我收到:
Couldn't find Airport without an ID
请求参数我有
{"action"=>"show", "controller"=>"airports", "id"=>"led"}
如果我将控制器 params[:code]
更改为 params[:id]
它可以工作,但我不想以这种方式使用它,因为我没有 id
列数据库
当您在 Rails 4:
中声明路由时,您可以使用 :param
选项覆盖默认资源标识符 :id
resources :airports, param: :code
这应该导致以下 URI 模式:
/airports/:code(.:format)
因此您可以使用 params[:code]
从您的控制器访问该段。
在 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
时,我收到:
Couldn't find Airport without an ID
请求参数我有
{"action"=>"show", "controller"=>"airports", "id"=>"led"}
如果我将控制器 params[:code]
更改为 params[:id]
它可以工作,但我不想以这种方式使用它,因为我没有 id
列数据库
当您在 Rails 4:
中声明路由时,您可以使用:param
选项覆盖默认资源标识符 :id
resources :airports, param: :code
这应该导致以下 URI 模式:
/airports/:code(.:format)
因此您可以使用 params[:code]
从您的控制器访问该段。