VoltRb 中带有 File-IO 的空字符串
An empty string with File-IO in VoltRb
我正在尝试在 VoltRb 中读取一些文件并将这些文件的内容嵌入到我的视图中。我最初计划我会在服务器端读取文件(因为客户端不支持文件读取),然后将这些文件的字符串传递给客户端,但似乎我得到了我在客户端上的文件的空字符串。
下面是一些代码来演示我的问题:
file.txt
file contents
main_controller.rb
if RUBY_ENGINE == 'ruby'
file = File.open("app/files_to_read/lib/file.txt", "r")
$file_text = file.read
file.close
puts $file_text # returns "file contents" on the server side
puts $file_text.class # returns "String" on the server side
end
module Main
class MainController < Volt::ModelController
model :page
def index
page._text = $file_text
puts $file_text # returns an empty string in the browser console
end
...
end
end
index.html
<:Title>
Home
<:Body>
<h1>Home</h1>
<p>{{ _text }}</p>
<!-- ^ an empty string -->
我的目录树如下所示:
app
├── files_to_read
│ └── lib
│ └── file.txt
└── main
├── assets
├── config
├── controllers
│ └── main_controller.rb
├── lib
├── tasks
└── views
└── main
├── about.html
├── index.html
└── main.html
为什么我的文件得到一个空字符串,我该如何解决这个问题?
所以要记住的一件事是控制器将 运行 两次,一次在客户端上,一次在服务器上。因此客户端将与服务器上的实例不同,因此他们无法访问 $file_text global.
您可以做的是创建一个读取文件然后 returns 文件文本的任务。查看@RickCarlino 的优秀任务教程视频:http://datamelon.io/blog/2015/creating-volt-task-objects.html
谢谢
我正在尝试在 VoltRb 中读取一些文件并将这些文件的内容嵌入到我的视图中。我最初计划我会在服务器端读取文件(因为客户端不支持文件读取),然后将这些文件的字符串传递给客户端,但似乎我得到了我在客户端上的文件的空字符串。
下面是一些代码来演示我的问题:
file.txt
file contents
main_controller.rb
if RUBY_ENGINE == 'ruby'
file = File.open("app/files_to_read/lib/file.txt", "r")
$file_text = file.read
file.close
puts $file_text # returns "file contents" on the server side
puts $file_text.class # returns "String" on the server side
end
module Main
class MainController < Volt::ModelController
model :page
def index
page._text = $file_text
puts $file_text # returns an empty string in the browser console
end
...
end
end
index.html
<:Title>
Home
<:Body>
<h1>Home</h1>
<p>{{ _text }}</p>
<!-- ^ an empty string -->
我的目录树如下所示:
app
├── files_to_read
│ └── lib
│ └── file.txt
└── main
├── assets
├── config
├── controllers
│ └── main_controller.rb
├── lib
├── tasks
└── views
└── main
├── about.html
├── index.html
└── main.html
为什么我的文件得到一个空字符串,我该如何解决这个问题?
所以要记住的一件事是控制器将 运行 两次,一次在客户端上,一次在服务器上。因此客户端将与服务器上的实例不同,因此他们无法访问 $file_text global.
您可以做的是创建一个读取文件然后 returns 文件文本的任务。查看@RickCarlino 的优秀任务教程视频:http://datamelon.io/blog/2015/creating-volt-task-objects.html
谢谢