2

使用: - Rails 3.0.3 - Friendly_id 4.0.0 Beta 11 - Windows - i18n (0.6.0, 0.5.0) (「gem list」による)

セットアップ: スウェーデン語と英語を言語として使用した計算に関する多言語 Web サイトを持っています。Friendly_id を使用して、seo フレンドリーな URL を作成しています。

私のmysqlテーブルには、「slug」、「slug_se」、「slug_en」という列があります。「slug」列を使用する必要があるかどうかはわかりませんが、「slug_en」と同じです。

問題: 「update_attributes」を使用すると、「slug_se」が「slug」(デフォルトでは英語) で上書きされます。したがって、「slug」の値は「slug_se」に書き込まれます。

トラブルシューティング: - この問題を Google で調べたところ、Google フォーラム (http://groups.google.com/group/friendly_id/browse_thread/thread/154f4a5024e23418) で (未回答の) フォーラム スレッドが 1 つだけ見つかりました。- update_attributes の代替手段を見つけようとしました。

質問: - 「スラッグ」カラムを使用する必要はありますか? - ID も更新しようとしない update_attributes の代替手段はありますか? - 私がやっていることに、問題の原因となっている何か問題があると思いますか?

コード: モデル:

  extend FriendlyId
  friendly_id :name, :use => :slugged, :use => I18n
4

2 に答える 2

3

私はFriendlyIdの作者です。プロジェクトのGithubの問題でこの質問をする方が幸運かもしれませんが、たまたまこれを偶然目にしました。

i18nモジュールはまだかなり新しいので、不安定でごめんなさい、そしてフィードバックに感謝します。:)

スラッグカラムについてのあなたの質問に答えて、あなたはそれを全く持ってはいけません:ただslug_enとslug_se。これは9月4日に行われた変更です。

https://github.com/norman/friendly_id/commit/54536464132ac8f72c96e8bda203c337f9d56aa0

したがって、その列を削除してみてください。問題が解決しない場合は、Githubにバグレポートを投稿してください。できるだけ早く調査します。

それまでの間、あなたが説明した問題を再現するためのテストを追加してみます。再現できれば、間違いなく修正します。

于 2011-09-21T16:47:58.397 に答える
0

ノーマン、ありがとう。スラグカラムを削除しましたが、これでも解決しませんでした。デフォルトのスラッグが 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)

(正しく) slug_se = procent を使用している @36mCACHE を確認してから、2 行下の @36mCalculation LOAD を確認してください。

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"}

レイズ計算を行いました。

于 2011-09-22T05:49:29.207 に答える