【问题标题】:how to read a file created in rails using javascript within new.html.erb如何使用 new.html.erb 中的 javascript 读取在 Rails 中创建的文件
【发布时间】:2017-04-07 08:43:21
【问题描述】:

我在创建外部 events.json 文件的 Rails 中有这个方法。

 def new
        @event=Event.new
        @users=User.all
        @events=@user.events
        tempJson = @events.to_json.html_safe
        aFile = File.new("events.json", "r+")
        aFile.syswrite(tempJson)
    end

现在 events.json 文件在我的应用程序目录中创建。 在我的 new.html.erb 中,如何通过 javascript 访问该文件并将其设置为变量?

<script type="text/javascript">
          $.getJSON("events.json", function(json) {
        debugger;
         console.log(json);
       });      
    </script>

我试过这个..我检查时收到此错误消息,

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/users/14/events/events.json

【问题讨论】:

  • 为什么不从方法中将其渲染为json?
  • 文件存储的实际路径是什么?即它在哪个目录中?
  • @user2085143 events.json 文件被生成并存储在同一个应用程序目录中,其中存在 app、bin 等目录screenshot
  • 我认为您的路径可能有点偏离,因此为什么您会收到 404。您是否在 get 请求中尝试过 '/events.json'?

标签: javascript html ruby-on-rails json ruby


【解决方案1】:

您必须将文件写入 public/ 目录。您可以通过以下方式实现:

File.new(Rails.public_path + 'events.json', 'w+')

然后,您可以在视图中访问该文件:

$.getJSON("/events.json")

但我认为实现这一点的最佳方法是使用带有响应的事件控制器和索引操作在 json 中。

class EventsController < ApplicationController
  def index
    @events = Event.all
    respond_to do |format|
      format.json { render json: @events}
    end
  end
end

【讨论】:

  • 谢谢。我知道浏览器在公共目录中搜索 events.json 文件。现在它工作正常。 :)
  • 获得公共目录的更好方法就像@jrbedard 回答Rails.public_path。答案已编辑。
【解决方案2】:

首先:你确定文件被写入了吗?因为你使用File.new("events.json", "r+"),我认为这意味着read 你需要w+ for write

第二个:是location = "users/14/events/events.json"

在这两种情况下都使用Rails.public_path + path + /file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多