【问题标题】:Rails how to know what page the user came from? Use conditionals to display content based on what page a user navigated from?Rails 如何知道用户来自哪个页面?使用条件来根据用户从哪个页面导航显示内容?
【发布时间】:2015-08-11 20:41:38
【问题描述】:

我正在尝试在我的应用中实现第二语言(法语)。对于只需要支持一种额外语言的 10 页小型 Web 应用程序来说,标准的 Rails 国际化方法似乎太过分了。因此,相反,我正在考虑为我的每个视图以替代语言创建第二个 .html.erb,然后在每种语言中设置链接以链接到该语言的视图页面。

问题出在少数 html.erbs 中,例如 application.html.erb 和由 Devise 用户系统自动生成的视图,在这种情况下,制作第二个版本可能比它的价值更麻烦。在这些方面,我认为最简单的方法可能是添加一些条件,根据用户从哪个页面导航或当前在哪个页面上显示英语或法语(因为application.html.erb 显示在每个页面的顶部和底部)。

如何根据用户当前所在的页面或用户从哪个页面导航,为 application.html.erb 和其他视图创建显示法语的条件?

例如我有my_app.com/indexmy_app.com/index_fr。我已经拥有所有法语语言的index_fr,但现在我还需要在从application.html.erb 发布的部分中显示法语,并且有几页像我的my_app.com/users/sign_up 这样我不想制作第二个视图是因为我不想过多地修改 Devise,我希望能够根据它们是否导航来显示我的英语或法语副本,例如,/index/index_fr、@987654331 @ vs /entries/fr/5(显示英文和法文页面)等

有什么想法吗?

【问题讨论】:

  • 请将问题标题和正文缩小到一个问题/概念。请使用代码块格式化(内联反引号)。在不知道设计的情况下,唯一能想到的就是设置隐藏属性。
  • 谢谢。我主要是问如何知道用户来自哪些页面,尽管我想解释一下上下文,以防有人对如何解决我的问题有更好的想法。
  • justinweiss.com/blog/2015/03/17/how-rails-sessions-work 我认为将首选语言存储在会话或 cookie 中是最好的方法。

标签: html ruby-on-rails ruby devise


【解决方案1】:

application.html.erb 是一个layout 视图,您可以为法语制作另一个布局并在运行时选择ApplicationController 中的布局:

class ApplicationController
  layout :layout_by_language

  private

    def layout_by_language
      current_lang == 'french' ? 'application_fr' : 'application_es'
    end

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多