首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VoltRb中带有文件IO的空字符串

VoltRb中带有文件IO的空字符串
EN

Stack Overflow用户
提问于 2015-07-07 15:42:27
回答 1查看 52关注 0票数 1

我试图在VoltRb中进行一些文件读取,并将这些文件的内容嵌入到我的视图中。我最初计划在服务器端读取文件(因为客户端不支持文件读取),然后将这些文件的字符串传递给客户端,但我似乎得到了客户机上文件的空字符串。

下面是一些代码来演示我的问题:

file.txt

代码语言:javascript
复制
file contents

main_controller.rb

代码语言:javascript
复制
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

代码语言:javascript
复制
<:Title>
  Home

<:Body>
  <h1>Home</h1>
  <p>{{ _text }}</p>
  <!-- ^ an empty string -->

我的目录树如下所示:

代码语言:javascript
复制
app
├── files_to_read
│   └── lib
│       └── file.txt
└── main
    ├── assets
    ├── config
    ├── controllers
    │   └── main_controller.rb
    ├── lib
    ├── tasks
    └── views
        └── main
            ├── about.html
            ├── index.html
            └── main.html

为什么我要为我的文件获得一个空字符串,以及如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 16:19:54

因此,需要记住的一点是,控制器将运行两次,一次在客户机上,一次在服务器上。因此,客户端的实例将不同于服务器上的实例,因此它们将无法访问$file_text全局。

不过,您可以做的是创建一个任务,读取该文件,然后返回该文件的文本。查看@RickCarlino的优秀任务教程视频:http://datamelon.io/blog/2015/creating-volt-task-objects.html

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31273305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档