我试图有条件地路由两个不同的控制器动作。我创建了RoutesController#root
并从routes.rb发送了root
,但是无论我在root方法中写什么,应用程序只想找到要呈现的根模板。
我想要实现的目标是:
current_user.company.present?
(当前路由控制器中的current_user可用吗?)则呈现引号#new 我遇到了丢失的模板错误;
Missing template companies/1/quotes/new.1 with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: * "app/views"
我希望它能在app / views / quotes / new中搜索,我做错了什么?
RoutesController.rb
class RoutesController < ActionController::Base
before_filter :authenticate_user!
def root
if current_user.company.present?
render new_company_quote_path(current_user)# 'quotes#new'
else
render new_company_path(current_user) # 'companies#new'
end
end
end
的routes.rb
root 'routes#root'
答案 0 :(得分:1)
render
,它不会执行任何代码。有关详细信息,请参阅this发布。
因此,在您的情况下,它应该是redirect_to
而不是render
。
关于最佳实践的事情,对我来说看起来不错。