Ruby on rails Rails中一条路线的两个动作
我有这样的问题:Ruby on rails Rails中一条路线的两个动作,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有这样的问题: 我有两种型号:用户和页面 用户和页面具有字段url。 所以我有路线 get':url'=>'用户#显示'和get':url'=>'页面#显示' 我应该如何从该路由重定向到用户显示或页面显示的某个操作?url和操作之间存在一对一的关系。所以/url可以是显示给用户的,也可以是显示页面的,但不能同时显示两者 听起来您可能需要两个单独的路由,一个用于/users/url和/pages/url,在这种情况下,您可能需要如下路由 match 'users/url' => 'user
我有两种型号:用户和页面
用户和页面具有字段url。
所以我有路线
get':url'=>'用户#显示'
和get':url'=>'页面#显示'
我应该如何从该路由重定向到用户显示或页面显示的某个操作?url和操作之间存在一对一的关系。所以/url可以是显示给用户的,也可以是显示页面的,但不能同时显示两者 听起来您可能需要两个单独的路由,一个用于/users/url和/pages/url,在这种情况下,您可能需要如下路由
match 'users/url' => 'users#show'
match 'page/url' => 'pages#show'
您首先需要一个代理操作,该操作检查url是用户还是搜索数据库的页面,然后调用实际操作 差不多
get 'users/:url', to: 'users#show', as: 'show_user'
get 'pages/:url', to: 'pages#show', as: 'show_page'
get ':url', to: 'application#user_or_page'
应用控制器研究
def user_or_page
if u = User.find_by_permalink(params[:url])
redirect_to show_user_path(u)
elsif p = Page.find_by_permalink(params[:url])
redirect_to show_page_path(p)
else
# do something with an invalid url
end
end
我想如果你想的话,你可以呈现一些模板而不是重定向,但我会使用重定向这绝对是构建路由的更好方法。我知道这个解决方案,但我需要没有用户/和页面/的链接。我想将这部分代码移动到两个控制器上。正如我在最后所说的,您可以渲染模板而不是重定向,只需执行“渲染模板:”users/show“谢谢。我会这样做。请确保完成所有before_过滤器/操作,并实例化模板所需的所有变量