ActiveAdmin、Globalize、FriendlyIdを使用してRailsアプリケーションを構築しています。私はActiveAdminで記事のタイトルを更新するときFriendlyIdがタイトルのスラッグを更新しない
class Post < ActiveRecord::Base
translates :title, :slug, :content
active_admin_translates :title, :slug, :content do
validates :title, presence: true
end
extend FriendlyId
friendly_id :slug_candidates,
use: [:slugged, :history, :globalize, :finders]
private
def slug_candidates
[[:title, :deduced_id]]
end
# Used to add prefix number if slug already exists
def deduced_id
count = Post.where(title: title).count
return count + 1 unless count == 0
end
end
しかし、スラグはfriendly_idによって更新されることはありませんので、私は、このメソッドを追加しました:私のモデルでは
私はグローバル化とFriendlyIdパラメータ(抜粋)をアップ定住しました:
def should_generate_new_friendly_id?
title_changed? || super
end
これを行うと、title_changed?私が知らない理由で新しいタイトルがモデルに送られないので、常にfalseですが、翻訳されていない他のパラメータについては、正しく取得されます。
例:
logger.debug(title) # => Give me new updated title value BUT
title_changed? # => Always nil
online_changed? # => Works
それはモデルが翻訳された属性の更新について知っていない可能性がありどのように?
私は何を欠席しましたか?
ありがとうございました!
マイプロジェクト:
- Railsの4.2.7.1 /ルビー2.3.0
- ActiveAdmin 1.0.0pre4
- 5.0.1
- は5.1.0
- FriendlyIdグローバル化をFriendlyIdグローバル化1.0.0.alpha2
編集:(私のフォームの抽出物)
f.translated_inputs 'Translated fields', switch_locale: true do |t|
t.input :title
t.input :content
end
感謝を試してみたが、私は私の形で任意の「スラッグ」入力フィールドを持っていない(私は私の質問は、フォームのエキスを加える編集しました)。 新しい投稿を作成すると、すべての言語に対してスラッグが正しく設定されます。 – anthony