gpt4 book ai didi

ruby-on-rails - 组织 Rails Controller 索引的最佳方式

转载 作者:行者123 更新时间:2023-12-04 17:00:57 27 4
gpt4 key购买 nike

我们的应用程序可以跟踪未经预约就走进我们诊所的客户。我们从一个简单的 WalkIn 模型和 WalkInsController 开始。
然后我们添加了另一种类型的walk-in,然后是另一种......所以现在我们的#index 操作必须在四种不同的walk-in 类型之间进行过滤,有时会以不同的方式对待它们。
其他 REST 操作(除 #show 之外)在类型之间基本相同,但可能有一些细微差别。我们还有一些非 REST 方法在其他任何地方都不适用。
所以,至少,这个#index Action 需要被驯服。
第一个想法:我将为 #index 命名空间 walk_ins:

namespace :walk_ins do
get 'clinic' => 'clinic_walk_ins#index', :as => :clinic
get 'group' => 'group_walk_ins#index', :as => :group
get 'assessment' => 'assessment_walk_ins#index', :as => :assessment
get 'initial' => 'initial_walk_ins#index', :as => :initial
end

resources :walk_ins, except: [ :index ] do
member do
get :eligible_initial_appointments
patch :mark_follow_up_as_completed
end
collection do
get :follow_up_due
end
end
所以我会创建 WalkIns::InitialWalkInsController等,对于初始步入的#index 操作,我将离开顶级 WalkInsController对于其余资源。
但由于命名空间与顶级 Controller 相同—— walk-ins -- 我做不到 walk_ins/initial ,因为 Rails 会将其视为 walk_ins#show并说它找不到 ID 为“show”的 WalkIn。
我可以简单地更改命名空间的名称,但是 walk_ins真的是最有意义的。
第二遍——将所有资源路由嵌入到命名空间中:
namespace :walk_ins do
get 'clinic' => 'clinic_walk_ins#index', :as => :clinic
get 'group' => 'group_walk_ins#index', :as => :group
get 'assessment' => 'assessment_walk_ins#index', :as => :assessment
get 'initial' => 'initial_walk_ins#index', :as => :initial

resources :walk_ins, except: [ :index ] do
member do
get :eligible_initial_appointments
patch :mark_follow_up_as_completed
end
collection do
get :follow_up_due
end
end
end
这是有效的,并且为每种类型的 walk_in#index 都有一个离散 Controller 很棒。
但是现在所有不是索引的资源都必须在 walk_ins/walk_ins 内.
例如,要编辑 WalkIn 3,URL 为: /walk_ins/walk_ins/3/edit那好像……不是我想要的。
组织这个的最佳方式是什么?

最佳答案

您可以像这样在集合块内移动所有 walk_ins 过滤器

resources :walk_ins, except: [ :index ] do
member do
get :eligible_initial_appointments
patch :mark_follow_up_as_completed
end

collection do
get :follow_up_due
get 'clinic', controller: 'walk_ins/clinic_walk_ins', action: 'index', as: 'clinic'
get 'group', controller: 'walk_ins/group_walk_ins', action: 'index', as: 'group'
get 'assessment', controller: 'walk_ins/assessment_walk_ins', action: 'index', as: 'assessment'
get 'initial', controller: 'walk_ins/initial_walk_ins', action: 'index', as: 'initial'
end
end

关于ruby-on-rails - 组织 Rails Controller 索引的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67864859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com