【问题标题】:I18n.locale troubles when sorting datas from a table对表中的数据进行排序时出现 I18n.locale 问题
【发布时间】:2012-03-23 16:58:38
【问题描述】:

我的应用程序 Rails 和语言环境参数有一点问题。

我成功地在 routes.rb 文件中启用了我所有控制器的路由,并在 URL 中使用我的 :locale 值在域和控制器之间进行。

当控制器需要使用“Data.find(:all)”或“Data.all”方法或自定义条件来查看所有数据时,我会收到路由错误。

p>

如果只有 une 数据由 ID 或 ONE 参数过滤以仅呈现 ONE 数据,则一切正常。

在日志中,我只看到“500 内部错误”和我在网站上看到的错误(开发模式)。

这是完整的错误代码:

没有路线匹配 {:action=>"edit", :controller=>"translation_english_words", :locale=>#}

网址是:“http://domain/fr/translation_english_words”(:domain/:locale/:controller)

我的控制器是“translation_english_words”,并且在我的数据库中有一个同名的表。

表格有3列,id:autoincrement, data:string, transvalue:string

我看到路由中的 ":locale" 部分不包含 "fr""en" 或其他语言环境是必须包含的。它只是不包含以 " 开头并以 " 结尾的所有其他参数,例如 ":action"":controller "

实际上,我需要语言环境来检测所需的语言。

不使用任何“t(:value)”翻译atm。

此错误不仅出现在此控制器上,而且出现在需要从任何表中排序多个 UNIQUE 范围数据的每个控制器上。

有人知道如何解决我的问题吗?

【问题讨论】:

  • accept the answer解决了您的问题,不要在您的问题中添加“标签”。

标签: ruby-on-rails database internationalization locale


【解决方案1】:

很高兴知道您的路线的实际实施,have you followed the guides?看来你应该有这样的东西:

# config/routes.rb
scope "/:locale" do
  resources :translation_english_words
  # [...] # all other controllers
end

我不确定你

在 routes.rb 中成功启用了我所有控制器的路由

实际上你的控制器被解释为语言环境,这让我觉得路由尝试是不同的。

我也不太明白你的网址:http://domain/fr/translation_english_words 如果您在本地开发环境中工作,这不应该类似于“:http://domain.lvh.me:3000/fr/translation_english_words吗?

【讨论】:

  • 控制器不会被解释为区域设置,因为如果表中没有值 (我有 3 个这样的控制器,french_words / German_words / english_words)。如果有 One 值,则路由失败。如果表中没有任何内容,则路由工作。这部分::locale=>#<TranslationEnglishWord id: 1, data: "song", transvalue: "choubidoubop"> 这不是控制器,它是名为 TranslationEnglishWords 的数据库表的第一行 (使用 nifty:scaffold 生成的授权) 当我说“域”时,我指的是 IP 绑定,包括端口如:"192.168.1.34:8082"
  • 对于路由,我使用了这个:scope "(:locale)", :locale => /en|fr|de/ do resources :translation_english_words # [...] * all other controllers end 当输入 rake routes 时,我可以看到 /:locale/translation_english_words 的路由以及控制器的所有操作。
【解决方案2】:

大家好,我找到了路由失败的“原因”。

这似乎导致路线中断:

控制器:

<pre>
    def index
    @translation_english_word = TranslationEnglishWord.all
    end
</pre>

查看:

<pre>
    &lt;% for translation_english_word in @translation_english_word %&gt;
    &lt;%= link_to "Edit", 
    edit_translation_english_word_path(translation_english_word) %&gt;&lt;br /&gt;
    &lt;% end %&gt;
    &lt;%= link_to "New English Translation", new_translation_english_word_path %&gt;
</pre>

调用edit_translation_english_word_pathnew_translation_english_word_path 的路径似乎中断了路径。 我不知道为什么,但删除它们解决了我的问题,但仍然不清楚为什么会发生这种情况,我想了解为什么有人可以对我发表评论?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2021-12-17
    • 2021-03-15
    • 2015-10-05
    • 2011-09-16
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多