Ruby on rails 链接_到';行不通 目标

Ruby on rails 链接_到';行不通 目标,ruby-on-rails,Ruby On Rails,自动创建类似于/en-US/welcome/的URL,不需要任何手动前缀或类似的内容 问题 只是不工作。我的URL中似乎没有区域设置 情景 我的application\u controller.rb已经具有default\u url\u options()方法: def default_orl_options(options = {}) { locale: I18n.locale } end 这是我的路线。rb: [...] get "home/index" root to: 'hom

自动创建类似于
/en-US/welcome/
的URL,不需要任何手动前缀或类似的内容

问题 只是不工作。我的URL中似乎没有区域设置

情景 我的
application\u controller.rb
已经具有
default\u url\u options()
方法:

def default_orl_options(options = {})
  { locale: I18n.locale }
end
这是我的
路线。rb

[...]

get "home/index"

root to: 'home#index'

get '/:locale' => 'home#index'

scope '/:locale' do
  resources :home
end

[...]
最后,要显示一个链接:

[...]

<%= link_to '', url_for('buy') %>

[...]
[…]
[...]
结果如何<代码>http://localhost:3000/buy/我只想
locale
在URL前面加前缀。


现在,谢谢

在较新的应用程序中,首选格式为:


Rails.application.routes.default\u url\u options[:locale]=I18n.locale

应用程序说明
  • 创建一个名为
    config/initializers/default\u url\u opts.rb的文件
  • 将上述示例添加到文件中,然后重新启动应用程序

我和您有完全相同的问题,尽管有以下问题(在
ApplicationController
中定义
default\u url\u options
方法,并在
操作之前在
中设置
I18n.locale

我的问题是有人在
routes.rb
的作用域中放置了一个
default
参数,类似这样:

scope "(:locale)", locale: /en|pt-br|es/, defaults: { locale: ''}
...
作为(阅读“可能的问题”),此处的
默认值
,尽管名称不同,实际上覆盖了该区域设置参数。结果是,如果我在参数中特别指定了区域设置,我只在
link\u to
(使用
url\u for
)中获得本地化链接,类似于
link\u to(dashboard\u path(locale:I18n.locale))
,这正是ApplicationController中设置
default\u url\u options
应该避免我做的事情

从routes.rb中的范围块中删除
默认值
,是解决方案的一半;另一半是ApplicationController#default(默认)url(选项)中的改进代码

  def default_url_options(options = {})

    { locale: I18n.locale == I18n.default_locale ? nil : I18n.locale }.merge(options)

  end

最后一个的来源是。

这是什么
“购买”
路线?如果您编写
,会发生什么情况?@MarekLipka
没有与之匹配的路由{:controller=>“home”,:action=>“show”,:locale=>:“en-US”}缺少所需的键:[:id]
那么,这是什么
'buy'
路由?它必须只是一个普通页面。在
routes.rb
中没有关于
buy
的内容。我应该创造一些东西吗?试试看。类似于
get'/:locale/buy'
的东西应该可以工作。我应该把它放在
application\u controller.rb
上吗?在一种方法中?如果是的话,那是哪一个?@guilhermoderdenge通常我会创建一个初始值设定项,然后把它放在那里。我对Rails非常陌生。你能再往前走一点吗?谢谢你Jordon,但不幸的是没有成功。结果是相同的-没有URL的区域设置。