Pet*_*kov 1 ruby-on-rails params rails-routing ruby-on-rails-4
在Airport模型我primary_key用作机场国际代码,但Rails仍然:id在请求中使用.
我已经开始了 airport.rb
self.primary_key = 'code'
Run Code Online (Sandbox Code Playgroud)
并在 airports_controller.rb
def show
@airport = Airport.find(params[:code])
end
Run Code Online (Sandbox Code Playgroud)
但是当我试图获得时domain.com/airports/led,我会收到:
找不到没有身份证的机场
在请求参数我有
{"action"=>"show", "controller"=>"airports", "id"=>"led"}
Run Code Online (Sandbox Code Playgroud)
如果我将控制器更改params[:code]为params[:id]可行,但我不想以这种方式使用它,因为我id在DB中没有列.
当您在Rails 4中声明路由时,可以使用:param选项覆盖默认资源标识符:id:
resources :airports, param: :code
Run Code Online (Sandbox Code Playgroud)
这应该导致以下URI模式:
/airports/:code(.:format)
Run Code Online (Sandbox Code Playgroud)
因此,您可以从控制器访问该段params[:code].
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |