首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rails中缩短url helper

如何在rails中缩短url helper
EN

Stack Overflow用户
提问于 2017-11-27 03:37:18
回答 2查看 185关注 0票数 1

有很多关于这方面的问题,但没有一个能够回答我想要的。如果我错了,请告诉我。

我的路由文件中有以下路由

代码语言:javascript
复制
namespace :integrations do
  resources :google, only: [] do
    collection do
      get 'prompt'
      get 'callback'
    end
  end
end

它们创建了非常长的url助手,如下所示。

代码语言:javascript
复制
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

我想只对一个选定的路由进行重命名,并保持所有其他路由不变。

EN

回答 2

Stack Overflow用户

发布于 2017-11-27 04:11:18

你有没有尝试过用这种方式处理as

代码语言:javascript
复制
 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_googlecb_google

代码语言:javascript
复制
#rake routes

prompt_google GET    /integrations/google/prompt(.:format)   integrations/googles#prompt
cb_google GET    /integrations/google/callback(.:format) integrations/googles#callback

更新:

在这种情况下,您只想更改一条路由,为什么不像这样

代码语言:javascript
复制
get 'integrations/google/prompt', to: 'integrations/google#prompt', as: 'google_prompt'

rake路由将返回

代码语言:javascript
复制
 google_prompt GET    /integrations/google/prompt(.:format)   integrations/google#prompt
票数 0
EN

Stack Overflow用户

发布于 2017-11-27 04:15:36

您可以将路由定义编写为:

代码语言:javascript
复制
namespace :integrations, as: '' do
  resource :google, only: [] do
    collection do
      get 'prompt'
      get 'callback'
    end
  end
end

然后添加下面的词形变化来删除_index with helper。_index来自此implementation

代码语言:javascript
复制
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.plural /^(google)$/i, '\1s'
  inflect.singular /^(google)s/i, '\1'
end

现在你可以随心所欲地得到:

代码语言:javascript
复制
$ rails routes | grep google
        prompt_google GET    /integrations/google/prompt(.:format)          integrations/googles#prompt
      callback_google GET    /integrations/google/callback(.:format)        integrations/googles#callback
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47500201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档