Ruby on rails 创建新文件时出错

Ruby on rails 创建新文件时出错,ruby-on-rails,Ruby On Rails,当我在irb中运行此代码时: File.open('j1.txt','w') {|f| f.write("doc1223423")} 它成功地工作了。但是,当我在控制器中的方法中执行相同操作时,会出现以下错误: Errno::ENOENT (No such file or directory - file location as specified ) 为什么会这样做?我如何修复它?尝试将'w'更改为'w+'-这将创建一个新文件,'w'只打开一个现有文件进行写入(更新) 下面是一系列可能会有

当我在irb中运行此代码时:

File.open('j1.txt','w') {|f| f.write("doc1223423")}
它成功地工作了。但是,当我在控制器中的方法中执行相同操作时,会出现以下错误:

Errno::ENOENT (No such file or directory - file location as specified )

为什么会这样做?我如何修复它?

尝试将
'w'
更改为
'w+'
-这将创建一个新文件,
'w'
只打开一个现有文件进行写入(更新)

下面是一系列可能会有所帮助的示例:

    • 已解决。 我指定的上述文件位置不存在。 我在做这样的事情

      File.open ("#{RAILS_ROOT}/jatin/j.txt", 'w+') do |f|
            f.write("blah")
          end
      
      但是目录/jatin/不在那里,所以解决方案是首先创建目录,然后创建文件

      Dir::mkdir("#{RAILS_ROOT}/jatin")
      

      感谢大家的帮助。

      您是否尝试过使用文件的绝对路径?如果使用绝对路径时没有出现错误,则可能是控制器无法从文件所在的位置找到该文件。@Vic:是的……我尝试了绝对路径,但问题仍然存在,现在我终于解决了。谢谢你的帮助help@Vic:问题是我试图访问一个不存在的文件位置。例如,我试图访问/创建blah目录中不存在的文件j.txt(我假设创建文件时会自动创建该文件)。因此,在创建文件之前,我创建了一个空目录,然后创建了文件。希望我能够帮助您尝试使用您具有写入权限的特定路径,例如
      /tmp/j1.txt
      (如果在Unix上)或
      c:/windows/temp/j1.txt
      (如果在windows上)。除了写入外,“w+”唯一做的事情就是打开文件进行读取,请参阅您链接页面中的@Shannon:“w+”读写,将现有文件截断为零长度或创建一个新文件用于读写。@icyrock.com从同一页面:“w”“仅写,将现有文件截断为零长度或创建一个新文件用于写入。”它们都会截断或创建,与您在回答中所说的相反。我想我应该说,“它唯一不同的地方是”。