这方面有很多SO问题,但没有一个能够回答我的想法。如果我错了,请告诉我。
我的路线档案中有以下路线
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
我想只对一条选定路线进行重命名,并保持所有其他路线不变。
答案 0 :(得分:0)
您是否尝试过as
namespace :integrations, as: '' do
resource :google, only: [:prompt, :callback] do
collection do
get 'prompt', as: 'prompt'
get 'callback', as: 'cb'
end
end
end
在佣金路线上,我们得到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
更新
如果您想改变1路线,为什么不能使用
get 'integrations/google/prompt', to: 'integrations/google#prompt', as: 'google_prompt'
rake路线将返回
google_prompt GET /integrations/google/prompt(.:format) integrations/google#prompt
答案 1 :(得分:0)
您可以将路线定义写为:
namespace :integrations, as: '' do
resource :google, only: [] do
collection do
get 'prompt'
get 'callback'
end
end
end
然后添加以下变形以使用帮助程序删除_index
。 _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#callback