Ruby on rails Rails 4:如何在视图中使用标记文件的内容?
我有一个Rails 4应用程序,我希望有一个“更改”页面,显示最新版本中引入的更改。我在项目目录根目录中的文件Ruby on rails Rails 4:如何在视图中使用标记文件的内容?,ruby-on-rails,markdown,Ruby On Rails,Markdown,我有一个Rails 4应用程序,我希望有一个“更改”页面,显示最新版本中引入的更改。我在项目目录根目录中的文件CHANGELOG.md中已经有了此信息。如果我能有一个changes.html.erb视图将CHANGELOG.md转换为html,那将非常方便 -rw-r--r-- 1 ubuntu ubuntu 3640 Apr 24 22:50 CHANGELOG.md -rw-r--r-- 1 ubuntu ubuntu 1180 Apr 30 13:58 Gemfile -rw-r--r--
CHANGELOG.md
中已经有了此信息。如果我能有一个changes.html.erb
视图将CHANGELOG.md
转换为html,那将非常方便
-rw-r--r-- 1 ubuntu ubuntu 3640 Apr 24 22:50 CHANGELOG.md
-rw-r--r-- 1 ubuntu ubuntu 1180 Apr 30 13:58 Gemfile
-rw-r--r-- 1 ubuntu ubuntu 6324 Apr 30 13:58 Gemfile.lock
-rw-r--r-- 1 ubuntu ubuntu 155 Mar 10 14:47 README.md
-rw-r--r-- 1 ubuntu ubuntu 249 Mar 10 14:47 Rakefile
drwxr-xr-x 8 ubuntu ubuntu 4096 Mar 10 14:47 app/
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 10 14:47 bin/
drwxr-xr-x 5 ubuntu ubuntu 4096 Apr 24 22:50 config/
-rw-r--r-- 1 ubuntu ubuntu 153 Mar 10 14:47 config.ru
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 31 02:38 db/
drwxr-xr-x 4 ubuntu ubuntu 4096 Mar 10 14:47 lib/
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 14 13:53 log/
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 14 14:01 public/
drwxr-xr-x 2 ubuntu ubuntu 4096 Apr 26 22:44 spring/
drwxr-xr-x 8 ubuntu ubuntu 4096 Mar 29 02:58 test/
drwxr-xr-x 6 ubuntu ubuntu 4096 Mar 11 23:20 tmp/
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 10 14:47 vendor/
我能够使用以下方法创建一个帮助器方法,以将标记转换为HTML:
应用程序\u helper.rb
require 'redcarpet'
module ApplicationHelper
# Convert markdown to HTML
def markdown(text)
options = {
filter_html: true,
hard_wrap: true,
link_attributes: { rel: 'nofollow', target: "_blank" },
space_after_headers: true,
fenced_code_blocks: true
}
extensions = {
autolink: true,
superscript: true,
disable_indented_code_blocks: true
}
renderer = Redcarpet::Render::HTML.new(options)
@markdown ||= Redcarpet::Markdown.new(renderer, extensions)
@markdown.render(text).html_safe
end
end
<h1 class="page-header">Recent Changes</h1>
<div class="row">
<p>
<%= markdown("We should be able to render `code` and **bold words** with [Markdown](https://daringfireball.net/projects/markdown)") %>
</p>
</div>
然后,我在我的静态页面控制器pages#changes
中创建了一个视图和操作
changes.html.erb
require 'redcarpet'
module ApplicationHelper
# Convert markdown to HTML
def markdown(text)
options = {
filter_html: true,
hard_wrap: true,
link_attributes: { rel: 'nofollow', target: "_blank" },
space_after_headers: true,
fenced_code_blocks: true
}
extensions = {
autolink: true,
superscript: true,
disable_indented_code_blocks: true
}
renderer = Redcarpet::Render::HTML.new(options)
@markdown ||= Redcarpet::Markdown.new(renderer, extensions)
@markdown.render(text).html_safe
end
end
<h1 class="page-header">Recent Changes</h1>
<div class="row">
<p>
<%= markdown("We should be able to render `code` and **bold words** with [Markdown](https://daringfireball.net/projects/markdown)") %>
</p>
</div>
最近的更改
这是可行的,但我不确定如何将
CHANGELOG.md
传递给markdown
方法。如果我可以将CHANGELOG.md
留在顶层目录中,那就太好了,但是如果它允许我从视图中访问它,我想我可以移动它。您可以使用file.read()
加载文件的内容。知道了这一点,您只需要文件的路径:Rails.root
/CHANGELOG.md
实现所需结果的一种方法是将以下代码放置在页面的控制器中,然后在视图中呈现标记:
@changelog = File.read("#{Rails.root}/CHANGELOG.md")
<%= markdown @changelog %>
然后只需在视图中使用@changelog
标记方法即可:
@changelog = File.read("#{Rails.root}/CHANGELOG.md")
<%= markdown @changelog %>
您可以使用
file.read()
加载文件内容。知道了这一点,您只需要文件的路径:Rails.root
/CHANGELOG.md
实现所需结果的一种方法是将以下代码放置在页面的控制器中,然后在视图中呈现标记:
@changelog = File.read("#{Rails.root}/CHANGELOG.md")
<%= markdown @changelog %>
然后只需在视图中使用@changelog
标记方法即可:
@changelog = File.read("#{Rails.root}/CHANGELOG.md")
<%= markdown @changelog %>
您只需从磁盘读取文件即可
Rails.root
为您提供一个指向Rails应用程序根目录的对象
然后,我们传递读取文件内容的文件路径,并在完成时关闭文件处理程序
<div class="row">
<p>
<%= markdown(IO.read(Rails.root.join('CHANGELOG.md')) ) %>
</p>
</div>
你会这样称呼它:
file_to_markdown(Rails.root.join("CHANGELOG.md"))
您只需从磁盘读取文件
Rails.root
为您提供一个指向Rails应用程序根目录的对象
然后,我们传递读取文件内容的文件路径,并在完成时关闭文件处理程序
<div class="row">
<p>
<%= markdown(IO.read(Rails.root.join('CHANGELOG.md')) ) %>
</p>
</div>
你会这样称呼它:
file_to_markdown(Rails.root.join("CHANGELOG.md"))
只需将kramdown rails gem添加到您的gem文件中,然后在视图目录中创建.md文件,它就会自动工作。无需进行上述工作。只需将kramdown rails gem添加到Gemfile中,然后在视图目录中创建.md文件,它就会自动工作。无需上述任何努力。您可以将rails 5+上的嵌入式降价与gem
emd一起使用。
将这两行添加到应用程序的GEM文件中:
gem 'redcarpet'
gem 'emd'
捆绑安装
然后创建一个视图home/changelog.html.md
,并将标记粘贴到该文件中
在route.rb中,添加以下行:
get'/changelog',to:'home#changelog'
就这些。访问以查看渲染的降价
注意:您需要一个名为home的控制器<代码>轨道生成控制器主页
来源:您可以将rails 5+上的嵌入式标记与gem
emd一起使用
将这两行添加到应用程序的GEM文件中:
gem 'redcarpet'
gem 'emd'
捆绑安装
然后创建一个视图home/changelog.html.md
,并将标记粘贴到该文件中
在route.rb中,添加以下行:
get'/changelog',to:'home#changelog'
就这些。访问以查看渲染的降价
注意:您需要一个名为home的控制器<代码>轨道生成控制器主页
来源:File.read和IO.read做完全相同的事情-参见File.read和IO.read做完全相同的事情-参见