نظرة سريعة على نص الإجراء لـ Rails 6.0

اقترب الإصدار 6.0 من الإصدار Rails. سيصدر الإصدار المستقر في 30 أبريل. تم إصدار الإصدار التجريبي 1 من ريلز 6.0 في 15 يناير. وكما هو الحال دائمًا في إصدارات ريلز ، فإن ريلز 6.0 مليئة بالإثارة أيضًا. هناك إطاران رئيسيان تم تقديمهما حديثًا ، Action Mailbox و Action Text. في هذا المنشور ، دعنا نلقي نظرة سريعة على Action Text باستخدامه في تطبيق صغير.

نص العمل

يسمح لنا نص الإجراء بإحضار محتوى نص منسق وتحرير إلى ريلز. هذا يعني أنه يمكننا إجراء عمليات مثل تنسيق النص ، وتضمين الصور ، وتنسيق الروابط ، وإضافة قوائم وميزات أخرى شبيهة بالمحرر إلى حقل نصي.

يتم ذلك عن طريق تضمين محرر Trix في الإطار. يتم حفظ محتوى RichText الذي تم إنشاؤه بواسطة محرر Trix في نموذج RichText الخاص به المرتبط بأي نموذج Active Record موجود في التطبيق. يتم تخزين جميع الصور المضمنة أو المرفقات الأخرى تلقائيًا باستخدام Active Storage.

دعونا نبدأ في بناء تطبيق ريلز الخاص بنا والذي سيكون تطبيق مدون. تم إنشاء التطبيق في الإصدار 6.0 من ريلز ، لذا يجب أن يكون إصدار الياقوت> 2.5.

في نوع المحطة

rails new blog --edge

يجلب علم - edge أحدث إصدار من القضبان أو إصدار الحافة من القضبان.

يتوقع Action Text أن يتم تثبيت حزم الويب و ActiveStorage. التخزين النشط موجود بالفعل في تطبيق ريلز. لذلك نحن بحاجة

gem “image_processing”, “~> 1.2” #uncomment from Gemfilegem ‘webpacker’

في ملف الأحجار الكريمة.

الآن تشغيل

bundle install.

بعد ذلك ، نحتاج إلى إنشاء ملف config / webpacker.yml:

bundle exec rails webpacker:install

الآن دعونا نبدأ خادم ريلز الخاص بنا.

رائع ، دعونا نبني تطبيقنا بسرعة. سيكون للتطبيق مقالة نموذجية واحدة فقط.

لنقم بإنشاء وحدة تحكم للمقالات:

rails g controller Articles index new create show edit update destroy — no-helper — no-test-frameworks

ثم قم بتهيئة مساراتنا:

Rails.application.routes.draw do resources :articlesend

بعد ذلك ، نحتاج إلى إنشاء نموذجنا. سيكون لدينا نموذج المقالات واثنين من الحقول: هم عنوان و النص . يجب أن يكون text هو الحقل الذي يقبل تنسيق Rich Text. لذلك في الترحيل ، نحتاج إلى إضافة حقل العنوان فقط. سيتم التعامل مع حقل النص بواسطة ActionText.

دعونا ننشئ النموذج

rails g model Articles title:string — no-test-framework

وتشغيل الهجرات:

rails db:migrate

الآن دعونا نضيف جزء ActionText. لهذه الجولة الأولى

rails action_text:install

سيؤدي هذا إلى إضافة جميع التبعيات التي يتطلبها نص الإجراء. والجدير بالذكر أن هذا سيضيف ملفًا جديدًا javascript / packs / application.js وترحيلان للتخزين العملي.

قم بتشغيل عمليات الترحيل مرة أخرى باستخدام

rails db:migrate

الآن يمكننا إضافة جزء النص من نموذجنا. انتقل إلى app / Models / article.rb وأضف السطر التالي

has_rich_text :text

text هو اسم الحقل الذي نقدمه. يمكن أن يكون أي شيء مثل الجسد أو المحتوى وما إلى ذلك.

الآن يصبح نموذجنا

class Article < ApplicationRecord has_rich_text :textend

قبل أن نبني النموذج الخاص بنا ، لنقم بإنشاء منطق وحدة التحكم الخاص بنا لإنشاء المقالات:

class ArticlesController < ApplicationController def create @article = Article.new(article_params) @article.save redirect_to @article end
 private def article_params params.require(:article).permit(:title, :text) end
end

يمكننا الآن إنشاء نموذج للمدونة. في app / views / articles / new.rb أضف رمز النموذج التالي:

لاحظ أننا نستخدم form.rich_text_area لحقل النص الذييتم توفيره من خلال نص العمل.

دعونا نعرض صفحتنا:

رائع!!

لدينا الآن محرر نصوص رائع لإنشاء مقالتنا.

قبل أن نبدأ باللعب مع المحرر ، دعنا ننفذ بسرعة وظيفة العرض الخاصة بالمدونة ، حتى نتمكن من رؤية المقالات التي أنشأناها.

في app / controllers / articles_controller.rb أضف الوظيفة التالية:

 def show @article = Article.find(params[:id]) end

أيضًا ، نحتاج إلى إنشاء عرض لهذا.

قم بإنشاء ملف app / views / articles / show.html.erb وأضف الكود التالي:

Article Title:

Article Text:

هذا هو. تم تطبيقنا. الآن دعنا نتحقق من الميزات المتنوعة المتوفرة في محرر النصوص المقدم من ActionText.

يمكننا أن نرى أن ActionText يوفر تقريبًا جميع وظائف محرر نص منسق عادي مثل تنسيق النص بالخط العريض والمائل وإضافة خط الإقتباسات والاقتباسات والروابط وسحب الصور وإفلاتها ، إلخ.

بعد حفظ هذا ، يمكننا رؤية المنشور المحفوظ من صفحة العرض.

عظيم!

هذا مثال صغير جدًا يعرض إمكانات ActionText. اتمنى ان تكون مفيدة هل ستحاول.

تتعامل الغالبية العظمى من تطبيقات الويب مع المحتوى الغني بطريقة ما. لذلك أعتقد أن هذه الميزة الجديدة لـ Rails يمكن أن تجعل حياة العديد من المطورين أسهل.

مجد لـ DHH وكل الأشخاص الرائعين وراء هذا.

//github.com/amkurian/Rails-6.0_action_text_demo

بعض الروابط المفيدة:

نظرة عامة على نص الإجراء - أدلة روبي أون ريلز

نظرة عامة على نص الإجراء يوفر لك هذا الدليل كل ما تحتاجه للبدء في التعامل مع محتوى النص المنسق. بعد ... edgeguides.rubyonrails.org