在Rails中本地化路由和URL路径

时间:2018-05-17 13:27:44

标签: ruby-on-rails ruby

我有英语和西班牙语的多语种网站。我还使用过' route_translator'宝石有翻译的路线。我在顶部菜单中创建了一个按钮来更改语言,它运行正常。

当我还需要更改网址时,问题就来了。 如果我有这样的URL工作正常:

/news (english)
/es/noticias (spanish)

但如果我有类似的东西:

/news/{news_id}/{news_title}

/news/15248/the-best-concert-in-the-world
/es/noticias/15248/mejor-concierto-del-mundo

我尝试改变语言,我得到这样的网址:

/es/noticias/15248/the-best-concert-in-the-world

该路线已被翻译,但' news_title' (显然)仍然是英文。

我不知道如何解决这个问题,任何想法?

P.S。:一些代码(在Ruby中还不是新手:))

我使用这个gem(https://github.com/enriclluelles/route_translator)来获取路由本地化:

localized do
    get '/news/:reference/:slug', to:'news#show_by_url', as: :news
end

并且

def show_by_url
    news_ref = params[:reference]
    slug = params[:slug]

    @news = News.with_translations(I18n.locale).find_by_reference(news_ref)
    if not slug.eql? @news.slug
        @news = nil # I know this is crap
    end 
    render 'show_by_url'
end

0 个答案:

没有答案