Do you like GitHub issues Markdown editor? I love it too! ActionMarkdown aims to provide the same feature out of the box for Rails applications. With ActionMarkdown, it is easy to write some Markdown text in a form field and convert it to HTML seamlessly in the view.
Let's add this line to our application's Gemfile
:
gem "action_markdown"
We can then run the installation script to copy the migration file:
bin/rails action_markdown:install
Last but not least, we need to run the migration:
bin/rails db:migrate
ActionMarkdown is now installed, we are good to go!
Let's imagine we want to write articles in the Markdown format. In our Rails application, we will have an Article
. To add Markdown content, we need to use the has_markdown
macro like this:
class Article < ApplicationRecord
has_markdown :content
validates :content, presence: true
end
Without adding any new migration, we can now create a new article with Markdown text:
markdown = <<~MARKDOWN
# Title
This is a paragraph.
MARKDOWN
article = Article.create! content: markdown
In the view, the Markdown content will be converted to HTML. For example, in the ArticlesController#show
view, we can render the content converted to HTML like this:
<%# articles/show.html.erb %>
<%= @article.content %>
In the view above, the Markdown content will automatically be converted to the following HTML:
<h1>Title</h1>
<p>This is a paragraph.</p>
Note: To use a Markdown fields in forms, we should use the markdown_field
helper like in the following example:
<%= form_with model: article do |f| %>
<%= f.label :content %>
<%= f.markdown_field :content %>
<%= f.submit "Save" %>
<% end %>
The gem is available as open source under the terms of the MIT License.