0

我有路线

  match ":id", :to => "doctors#show", :via => :get, :as => :doctor
  match ":id", :to => "doctors#update", :via => :put, :as => :doctor

这给了我:

http://domain.com/ID

现在,我创建了另一个控制器,我也希望在其中拥有与以前几乎相同的路由。

  match ":id", :to => "professions#show", :via => :get, :as => :profession

这给了我:

http://domain.com/ID

但是,我想创建一些检查系统,例如:如果第一条路线没有找到任何数据,那就去检查另一个。它们在任何时候都绝对不会相同。


这是我在控制器中的显示代码:

  def show

     @profession = Profession.find_by_slug(params[:id])

  end
4

2 回答 2

0

异常处理是控制器的工作,而不是路由。

挽救无记录错误

class ApplicationController < ActionController::Base
  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found

  private

  def record_not_found
    render text: "404 Not Found", status: 404
  end
end

http://guides.rubyonrails.org/action_controller_overview.html#the-default-500-and-404-templates

于 2013-08-26T12:51:28.073 回答
0

您可以使用@techvineet 在评论中指出的方法,制作一个接收 ID 的“路由器模块”或制作一个“路由器控制器”。

此控制器/模块将首先尝试获取 Doctor,如果引发异常,则它会尝试获取 Profession。

于 2013-08-26T14:18:24.083 回答