gpt4 book ai didi

ruby-on-rails - 如何创建自定义路由助手以供在 routes.rb 中使用

转载 作者:行者123 更新时间:2023-12-03 20:49:27 26 4
gpt4 key购买 nike

我的 routes.rb 中有一些重复出现的模式,我想通过创建一个为我创建这些路由的方法来使其干燥。

在 Devise gem 中可以看到我想要完成的一个示例,您可以在其中使用以下语法:

#routes.rb
devise_for :users

这将生成设计所需的所有路线。我想创建类似的东西。例如,说我有以下路线:
resources :posts do
member do
get 'new_file'
post 'add_file'
end
match 'files/:id' => 'posts#destroy_file', :via => :delete, :as => :destroy_file
end

resources :articles do
member do
get 'new_file'
post 'add_file'
end
match 'files/:id' => 'articles#destroy_file', :via => :delete, :as => :destroy_file
end

这很快开始变得困惑,所以我想找到一种方法来做到这一点:
resources_with_files :posts
resources_with_files :articles

所以我的问题是,如何创建 resources_with_files 方法?

最佳答案

把它放在类似 lib/routes_helper.rb 的文件中:

class ActionDispatch::Routing::Mapper
def resources_with_files(*resources)
resources.each do |r|
Rails.application.routes.draw do
resources r do
member do
get 'new_file'
post 'add_file'
delete 'files' => :destroy_file
end
end
end
end
end
end

并在 config/routes.rb 中要求它

关于ruby-on-rails - 如何创建自定义路由助手以供在 routes.rb 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366803/

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