Ruby on rails 添加非标准视图和控制器操作的最佳实践?
我的情况是,我有一个“家长”模型和控制器。我想知道为用户添加独立页面(如仪表板)的最佳实践。我的想法是,我可以创建一个视图Ruby on rails 添加非标准视图和控制器操作的最佳实践?,ruby-on-rails,view,controller,routes,ruby-2.0,Ruby On Rails,View,Controller,Routes,Ruby 2.0,我的情况是,我有一个“家长”模型和控制器。我想知道为用户添加独立页面(如仪表板)的最佳实践。我的想法是,我可以创建一个视图dashboard.html.erb,并在父控制器内创建一个方法: 父控制器 def dashboard end Routes.rb get 'parents/dashboard' 我做过一次,效果很好,但这是一个“儿童”模型 当我在父模型中运行相同的情况时,我得到了错误 ActiveRecord::在ParentsController#show中找不到RecordNo
dashboard.html.erb
,并在父控制器内创建一个方法:
父控制器
def dashboard
end
Routes.rb
get 'parents/dashboard'
我做过一次,效果很好,但这是一个“儿童”模型
当我在父模型中运行相同的情况时,我得到了错误
ActiveRecord::在ParentsController#show中找不到RecordNot
找不到“id”=仪表板的父级
1。)我所做的只是添加一个视图,将仪表板模型添加到控制器中,并将get'parents/dashboard'
放入routes.rb中,它尝试引用show方法???为什么?
2。)这是向rails应用程序添加页面/操作的错误方法吗?如果要添加带有
:id
的额外路由,则语法不同
get 'parent_dashboard/:id', to: 'parents#dashboard'
注意,get之后的person字符串。这被用作网站的地址,当用户点击它时,如果它是第一个仪表板,它将转到localhost:3000/parent\u dashboard/1
。如果愿意,可以排除:id
。当然,这与用例不同
路由语法的第二部分是:to
,此方法告诉应用程序要查看哪个控制器和方法
希望这有帮助 这样做:
#config/routes.rb
resources :parents do
get :dashboard, on: :collection #-> url.com/parents/dashboard
end
这是向rails应用程序添加页面/操作的错误方法吗 这不是“错”,只是无效,正如你的问题所证明的那样 您遇到的问题是,您在
参考资料:家长
路线下面包含了自定义路线。由于创建了一个/:id
url,该url捕获发送到家长/:id
的任何请求,因此您的“仪表板”请求将被发送到家长控制器的显示
操作:
您的问题有两种解决方法:
get'parents/dashboard'
放在resources:parents
指令上方资源:父级(以上)
#config/routes.rb
resources :parents
get "parents/dashboard"
。。。Rails将假定仪表板
是url.com/parents/:id
中的:id
,从而将请求发送到show
除了顶级代码(推荐答案)外,您还可以拥有以下内容:
#config/routes.rb
get "parents/dashboard", to: :dashboard
resources :parents
如果要将新视图添加到父文件夹中。只要这样做:
parents_controller.rb
def dashboard
@parent = Parent.find(params[:id])
end
routes.rb
get '/parents/:id/dashboard', to: 'parents#dashboard', as: :parents_dashboards
resources :parents
然后在您的parents/dashboard.html.erb
视图中,您可以执行在parents/show视图中可以执行的所有操作
指向仪表板视图的链接将是parents\u dashboards\u path
,在某些情况下,您可能必须使用parents\u dashboards\u path(@parent)
或parents\u dashboards\u path(parent)
这是一个自定义路径的示例,它不使用嵌套资源来完成对父级仪表板的访问
我正在一个项目中使用这种方法,所以我想听听对这种方法的任何批评或评论。和平,我要离开这里 我会生成一个仪表板控制器,我想这会更快。新的足够多,我不确定是否太多的控制器会减慢应用程序的速度。我工作过的所有带有仪表板的rails应用程序都有一个仪表板控制器。。。