使用:-轨道3.0.3-Friendly_id 4.0.0 Beta 11-Windows-i18n(0.6.0,0.5.0(根据"宝石列表">
设置:我有一个以瑞典语和英语为语言的多语言计算网站。我正在使用friendly_id创建seo友好url。
在我的mysql表中,我有"slug"、"slug_se"one_answers"slug_en"列。我不确定是否需要使用"slug"列,它与"slug_en"完全相同。
问题:当使用"update_attributes"时,它会用"slug"(默认情况下是英文(覆盖"slug_se"。因此,"slug"中的值写在"slug_se"中。
故障排除:-我在谷歌上搜索了这个问题,在谷歌论坛上只找到了一个(未回答的(论坛帖子(http://groups.google.com/group/friendly_id/browse_thread/thread/154f4a5024e23418)这个问题没有得到回答。-我试着找到update_attributes的替代品,我可以浏览mysql,但那真的不太好。
问题:-我需要使用"鼻涕虫"列吗?-有没有一种替代update_attributes的方法不尝试更新id?-你能看出我所做的事情有什么不对的地方吗?
代码:型号:
extend FriendlyId
friendly_id :name, :use => :slugged, :use => I18n
我是FriendlyId的作者。你可能会更幸运地在项目的Github问题中问这个问题,我只是碰巧看到了这个。
i18n模块仍然很新,因此对不稳定感到抱歉,并感谢您的反馈。:(
在回答您关于slug列的问题时,不,您根本不应该有它:只有slug_en和slug_se。这是9月4日做出的改变:
https://github.com/norman/friendly_id/commit/54536464132ac8f72c96e8bda203c337f9d56aa0
因此,请尝试删除该列。如果您的问题仍然存在,请随时在Github上发布错误报告,我会尽快查看。
同时,我会尝试添加一个测试来尝试重现你描述的问题,如果我能重现它,我肯定会修复它。
Norman,谢谢。我去掉了子弹柱,但这并没有解决问题。默认的slug似乎覆盖了update_attributes中的slug_se。
这来自日志:
Started POST "/vardag/procent/result" for 127.0.0.1 at 2011-09-22 07:36:02 +0200
Processing by CalculationsController#result as HTML
Parameters: {"utf8"=>"Ô£ô", "authenticity_token"=>"Xrq9Zf8jGl2X1G9WvqMpcN1EQw7C2lda561FN9E7ZdM=", "first_number"=>"1.0", "second_number"=>
"2.5", "operation"=>"from_a_to_b", "commit"=>"Beräkna", "calculation_type_id"=>"vardag", "id"=>"procent"}
←[1m←[36mCalculation Load (1.0ms)←[0m ←[1mSELECT `calculations`.* FROM `calculations` WHERE (`calculations`.`slug_se` = 'procent') LIMIT
1←[0m
←[1m←[35mCalculationType Load (1.0ms)←[0m SELECT `calculation_types`.* FROM `calculation_types` WHERE (`calculation_types`.`id` = 1) LIMI
T 1
←[1m←[36mCACHE (0.0ms)←[0m ←[1mSELECT `calculations`.* FROM `calculations` WHERE (`calculations`.`slug_se` = 'procent') LIMIT 1←[0m
←[1m←[35mSQL (1.0ms)←[0m BEGIN
←[1m←[36mCalculation Load (1.0ms)←[0m ←[1mSELECT `calculations`.* FROM `calculations` WHERE (`slug_se` = 'percentage' OR `slug_se` LIKE '
percentage--%') AND (id <> 1) ORDER BY LENGTH(`slug_se`) DESC, `slug_se` DESC LIMIT 1←[0m
←[1m←[35mAREL (1.0ms)←[0m UPDATE `calculations` SET `recently` = 'someone_realized,that,when,1.0,goes_to,2.5,result_percentage_a_to_b_inc
reased,150.0,%', `slug_se` = 'percentage', `updated_at` = '2011-09-22 05:36:03' WHERE (`calculations`.`id` = 1)
检查@36mCACHE,它(正确地(使用slug_se=procent,然后在36mCalculation LOAD下两行,它选择其中slug_se=百分比(百分比为slug_en(。
我将在Git上写一份错误报告!
编辑:我做了更多的调试,可能会有所帮助:
我在模型中使用此方法调用更新:
def update_recently(calculation, new_recently_string)
raise calculation.inspect
calculation.update_attributes(:recently => new_recently_string.join(","))
end
这次加薪创造了这个:
#<Calculation id: 1, name: "Percentage", preimp: nil, url: nil, clicks: 71, clicks_week: 71, is_local: true, comment: nil, nofollow: true, updated: nil, calculation_type_id: 1, created_at: "2011-03-12 07:04:54", updated_at: "2011-09-22 05:53:25", last_checked: nil, calculation_status_id: 2, region_id: 1, source: nil, affiliate: false, examples: nil, recently: "someone_realized,that,when,1.0,goes_to,2.5,result_p...", is_special: false, slug_en: "percentage", slug_se: "procent">
参数为:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Xrq9Zf8jGl2X1G9WvqMpcN1EQw7C2lda561FN9E7ZdM=",
"first_number"=>"1.0",
"second_number"=>"2.5",
"operation"=>"from_a_to_b",
"commit"=>"Beräkna",
"calculation_type_id"=>"vardag",
"id"=>"procent"}
我做了一个加薪计算。friendly_id.inspect,它显示了"过程"。