有很多关于这方面的问题,但没有一个能够回答我想要的。如果我错了,请告诉我。
我的路由文件中有以下路由
namespace :integrations do
resources :google, only: [] do
collection do
get 'prompt'
get 'callback'
end
end
end它们创建了非常长的url助手,如下所示。
prompt_integrations_google_index GET /integrations/google/prompt(.:format) integrations/google#prompt
callback_integrations_google_index GET /integrations/google/callback(.:format) integrations/google#callback我尝试过使用as,但这不起作用。我不知道使用path是否是正确的方式。我如何缩短他们的帮助者名称?
例如:google_prompt_integrations_google_index -> google_prompt
我想只对一个选定的路由进行重命名,并保持所有其他路由不变。
发布于 2017-11-27 04:11:18
你有没有尝试过用这种方式处理as?
namespace :integrations, as: '' do
resource :google, only: [:prompt, :callback] do
collection do
get 'prompt', as: 'prompt'
get 'callback', as: 'cb'
end
end
end在rake路径上,我们得到prompt_google和cb_google
#rake routes
prompt_google GET /integrations/google/prompt(.:format) integrations/googles#prompt
cb_google GET /integrations/google/callback(.:format) integrations/googles#callback更新:
在这种情况下,您只想更改一条路由,为什么不像这样
get 'integrations/google/prompt', to: 'integrations/google#prompt', as: 'google_prompt'rake路由将返回
google_prompt GET /integrations/google/prompt(.:format) integrations/google#prompt发布于 2017-11-27 04:15:36
您可以将路由定义编写为:
namespace :integrations, as: '' do
resource :google, only: [] do
collection do
get 'prompt'
get 'callback'
end
end
end然后添加下面的词形变化来删除_index with helper。_index来自此implementation
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.plural /^(google)$/i, '\1s'
inflect.singular /^(google)s/i, '\1'
end现在你可以随心所欲地得到:
$ rails routes | grep google
prompt_google GET /integrations/google/prompt(.:format) integrations/googles#prompt
callback_google GET /integrations/google/callback(.:format) integrations/googles#callbackhttps://stackoverflow.com/questions/47500201
复制相似问题