我的应用程序rails和locale params有点问题。
我在routes.rb文件中成功启用了所有控制器的路由,并在URL和控制器之间使用了我的:locale值。
当控制器需要使用方法“Data.find(:all)”或“Data.all”或自定义条件从一个表中显示多个数据的排序以查看全部时,我收到路由错误。
如果只有一个ID或ONE参数过滤的数据只能渲染一个数据,那么一切正常。
在日志中我只看到“500内部错误”和我在网站上看到的错误(开发模式)。
以下是完整的错误代码:
No route matches {:action=>"edit", :controller=>"translation_english_words", :locale=>#<TranslationEnglishWord id: 1, data: "song", transvalue: "choubidoubop">}
网址为:“http:// domain / fr / translation_english_words”(:domain /:locale /:controller)
我的控制器是“translation_english_words”,并且在我的数据库中有一个同名的表。
该表有3列,id:autoincrement,data:string,transvalue:string
我看到路线中的“:locale”部分不包含“fr”或“en”或其他区域设置必须包含。并且它不包含以“开头并以”结束的数据,因为所有其他参数如“:action”和“:控制器“
实际上我需要区域设置来检测所希望的语言。
不使用任何“t(:value)”进行翻译atm。
此错误不仅发生在此控制器上,而且发生在需要从任何表中排序多个UNIQUE范围数据的EACH控制器上。
有人知道如何解决我的问题吗?
答案 0 :(得分:1)
很高兴知道您的路线have you followed the guides的实际实施情况?看来你应该有这样的事情:
# config/routes.rb
scope "/:locale" do
resources :translation_english_words
# [...] # all other controllers
end
我不确定你
在routes.rb
中成功启用了所有控制器的路由
实际上你的控制器被解释为locale,这让我觉得路由尝试是不同的。
此外,我无法理解您的网址:http://domain/fr/translation_english_words
如果您在本地开发环境中工作,那么这不应该是“:http://domain.lvh.me:3000/fr/translation_english_words
吗?”
答案 1 :(得分:0)
大家好,我发现“为什么”路线失败了。
这似乎导致了破解的路线:
控制器:
<pre>
def index
@translation_english_word = TranslationEnglishWord.all
end
</pre>
查看:
<pre>
<% for translation_english_word in @translation_english_word %>
<%= link_to "Edit",
edit_translation_english_word_path(translation_english_word) %><br />
<% end %>
<%= link_to "New English Translation", new_translation_english_word_path %>
</pre>
调用edit_translation_english_word_path
和new_translation_english_word_path
的路径似乎打破了路线。
我不知道为什么,但删除它们,解决了我的问题,但仍然不清楚为什么会发生这种情况,我想了解为什么有人可以对我发表评论?