我有路线
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
答案 0 :(得分: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
答案 1 :(得分:0)
您可以使用评论中指出的@techvineet方法,制作一个接收ID的“路由器模块”或制作“路由器控制器”。
此控制器/模块将首先尝试获取Doctor,如果引发异常,则会尝试获取专业。