Rails gem "friendly_id" を使用して、作成されるスラッグの "ライブ プレビュー" を取得することは可能ですか? オブジェクトが保存される前、つまり (そして ajax リクエストを使用して入力中に返される)?
もしそうなら、どのように?
Rails gem "friendly_id" を使用して、作成されるスラッグの "ライブ プレビュー" を取得することは可能ですか? オブジェクトが保存される前、つまり (そして ajax リクエストを使用して入力中に返される)?
もしそうなら、どのように?
FriendyId の作成者はこちら。
FriendlyId は内部的にプライベートset_slugを使用してこれを行います。このメソッドは、コールバックを介して呼び出されbefore_validationます。何らかの理由で を呼び出したくない場合は、を介しvalid?てメソッドを呼び出すか、それを呼び出すモデルでメソッドを定義できます。set_slugsend
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?。