仪表板命名空间的 Rails 路由帮助
Posted
技术标签:
【中文标题】仪表板命名空间的 Rails 路由帮助【英文标题】:Rails Routing Help for Dashboard Namespace 【发布时间】:2018-05-24 11:02:31 【问题描述】:我认为我已经正确设置了所有内容,但是当我尝试访问dashboards_posts_path 时,它会指向dashboard_path 视图而不是app>views>dashboards>posts#index 视图。我不明白为什么。
router
namespace :dashboards do
resources :posts
resources :tags
resources :ingredients
resources :comments
resources :pages
resources :users
end
controller
class Dashboards::PostsController < DashboardsController
# before_action :admin_authorize, only: [:new, :create, :edit, :update, :destroy]
protect_from_forgery with: :null_session
layout "dashboards"
def current_user
if session[:user_id]
@current_user = User.find(session[:user_id])
end
end
def index
@posts = Post.newest.paginate(page: params[:page], per_page: 3)
@all_posts = Post.all
end
end
views
routes
log
【问题讨论】:
你能显示日志,特别是 GET 请求吗?因为我有一种感觉 dashoards_posts_path 实际上正在重定向到 dashboards_path。即,如果您的 ApplicationController 中有一些 before_action 进行一些重定向;即授权 在“日志”下添加了照片,它肯定会重定向,我就是不明白为什么?我不明白为什么它由仪表板控制器而不是仪表板/帖子控制器处理。 解决了!非常感谢!! 另外,请记住发布代码,而不是图片。如果您发布图片,我们无法复制和粘贴以显示可能存在问题的位置。 顺便说一句,您的日志图像中没有重定向。 【参考方案1】:您的问题是您在所有 namespace :dashboards
东西之前定义了 resources :dashboard
(我在推测)。请记住,路线从上到下解析。因此,路由将GET dashboards/posts
解析为dashboards/:id
,这就是为什么您使用id
和posts
路由到DashboardsController#show
。
你为什么不试试:
resources :dashboards do
resources :posts
resources :tags
resources :ingredients
resources :comments
resources :pages
resources :users
end
应该正确解决。
或者,把resources :dashboards
放在你的命名空间的东西之后,像这样:
namespace :dashboards do
resources :posts
resources :tags
resources :ingredients
resources :comments
resources :pages
resources :users
end
resources :dashboards
【讨论】:
它不会让我点赞你,因为我还是个新手,但你已经在我心中被点赞了!以上是关于仪表板命名空间的 Rails 路由帮助的主要内容,如果未能解决你的问题,请参考以下文章