Ruby on rails 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--

我有一个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-- 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做完全相同的事情-参见