Rails gem "friendly_id" を使用して、作成されるスラッグの "ライブ プレビュー" を取得することは可能ですか? オブジェクトが保存される前、つまり (そして ajax リクエストを使用して入力中に返される)?
もしそうなら、どのように?
Rails gem "friendly_id" を使用して、作成されるスラッグの "ライブ プレビュー" を取得することは可能ですか? オブジェクトが保存される前、つまり (そして ajax リクエストを使用して入力中に返される)?
もしそうなら、どのように?
FriendyId の作成者はこちら。
FriendlyId は内部的にプライベートset_slug
を使用してこれを行います。このメソッドは、コールバックを介して呼び出されbefore_validation
ます。何らかの理由で を呼び出したくない場合は、を介しvalid?
てメソッドを呼び出すか、それを呼び出すモデルでメソッドを定義できます。set_slug
send
instance = ModelClass.new
instance.send(:set_slug)
# or
class ModelClass < ActiveRecord::Base
friendly_id :name, use: :slugged
def generate_slug_preview
set_slug
end
end
ただし、検証をバイパスまたは無視することは、多くの場合、悪い考えであることに注意してください。たとえば、モデルにフィールドの検証が含まれていて、name
そのフィールドをスラッグの基礎として使用した場合、実際には生成されないスラッグをプレビューしています。
https://github.com/norman/friendly_id/blob/master/test/slugged_test.rbあたり...
m1 = model_class.new :name => "a b c d"
m1.valid?
assert_equal "a-b-c-d", m1.slug
ただのよう.slug
です。他のテストでは、create
-は必要ありnew
ません。したがって、あなたの戦略は次のとおりです。
onchange
テキスト フィールドにハンドラーを追加するnew
名前またはAjaxが送信した値に設定されたモデルのインスタンスslug
、結果を Web ページに送り返すこれらはすべて標準的な Ajax のものであり、friendly_id
. しかし、ユーザーにスラッグを表示するため、friendly_id
ハイエンドのブログのようにスラッグを編集できるかどうか疑問に思います。
そして、おそらく最初に電話する必要がありますvalid?
。