gpt4 book ai didi

ruby-on-rails-4 - Rails 4 - 如何为嵌套资源添加索引路由,以便列出独立于父资源的所有项目

转载 作者:行者123 更新时间:2023-12-04 12:19:34 24 4
gpt4 key购买 nike

我有一个嵌套资源 Bar属于Foo .我可以成功列出所有Bar属于任何给定的对象 Foo .但我也希望能够生成包含所有 Bar 的 View 一起列出的项目,来自任何地方 Foo他们所属的对象。

模型结构为:

# app/models/foo.rb
class Foo < ActiveRecord
has_many :bars
end

# app/models/bar.rb
class Bar < ActiveRecord
belongs_to :foo
end

路由定义为:
# config/routes.rb
resources :foos do
resources :bars
end

我从这个配置中得到了预期的路由:
   foo_bars GET    /foos/:foo_id/bars(.:format)      bars#index
POST /foos/:foo_id/bars(.:format) bars#create
new_foo_bar GET /foos/:foo_id/bars/new(.:format) bars#new
edit_bar GET /bars/:id/edit(.:format) bars#edit
bar GET /bars/:id(.:format) bars#show
PATCH /bars/:id(.:format) bars#update
PUT /bars/:id(.:format) bars#update
DELETE /bars/:id(.:format) bars#destroy
foos GET /foos(.:format) foos#index
POST /foos(.:format) foos#create
new_foo GET /foos/new(.:format) foos#new
edit_foo GET /foos/:id/edit(.:format) foos#edit
foo GET /foos/:id(.:format) foos#show
PATCH /foos/:id(.:format) foos#update
PUT /foos/:id(.:format) foos#update
DELETE /foos/:id(.:format) foos#destroy

我需要的是为 bars#index 生成路由不在 foo 范围内.换句话说,我基本上想要:
bars  GET    /bars(.:format)      bars#index

我试过使用浅选项,因此:
# config/routes.rb
resources :foos, shallow: true do
resources :bars
end

但是,这不支持 :index 操作,根据 documentation .

做到这一点的最佳方法是什么?有一个有用的 Stack Overflow 讨论 here ,使用 before_filter确定范围——但它是从 2009 年开始的。感谢有关如何设置 Controller 和 config/routes.rb 的任何具体指导。适当归档!

最佳答案

如果你想保留作用域索引方法 foo_bars和一个单独的 bars路线/ View :

routes.rb 中创建自定义路由:

get 'bars' => 'bars#index', as: :bars

在您的 bars 中设置您的索引方法 Controller 如您的链接中所述或简单地:
def index
if params[:foo_id]
@bars = Foo.find(params[:foo_id]).bars
else
@bars = Bar.all
end
end

然后创建一个 bars查看目录(如果没有)和 index.html.erb .

如果您不想保留作用域索引方法 foo_bars :

routes.rb 中创建自定义路由:
get 'bars' => 'bars#index', as: :bars

编辑现有路由以排除嵌套索引:
resources :foos do
resources :bars, except: :index
end

然后是 bars Controller 可能只是:
def index
@bars = Bar.all
end

然后创建一个 bars查看目录(如果没有)和 index.html.erb .

关于ruby-on-rails-4 - Rails 4 - 如何为嵌套资源添加索引路由,以便列出独立于父资源的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31757006/

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