【问题标题】:How to open a file with with ruby?如何用 ruby​​ 打开文件?
【发布时间】:2019-05-20 09:37:17
【问题描述】:

我正在尝试使用 ruby​​ 在 Rails 用户模型上打开一个文件并从用户控制器调用它,但它一直让我返回错误数量的参数(给定 0,预期为 1..3)。

这是我的文件目录 'app' ,'assets', 'files', 'test_list.txt' 'app' ,'controllers', '用户控制器'

你能帮忙吗?谢谢

class User < ApplicationRecord
  def self.my_method
    my_array = []

    file = File.join(Rails.root, 'app' 'models','assets', 'files', 'test_list.txt')
    File.open.each do |line|
      my_array << line.gsub!(/\n?/, "")
    end

    return my_array.to_s
  end
end
class UsersController < ApplicationController
  require 'open-uri'
  require 'net/http'

  def show
    # uri = URI('https://gist.githubusercontent.com/Kalagan/3b26be21cbf65b62cf05ab549433314e/raw')
    #   data = Net::HTTP.get(uri)
    #   anagrams = data.split(/\n/)

    @vari = User.my_method
    @query = params[:query]
    @results = anagrams.select { |word| @query.split('').sort.join == word.split('').sort.join }
  end
end



【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4


    【解决方案1】:

    您没有向open 方法传递任何内容。传递文件名

    改变

    File.open
    

    File.open(file)
    

    open 方法至少需要知道它必须打开的文件名

    【讨论】:

    • 嗨,感谢您的回答,现在它返回 No such file or directory @ rb_sysopen
    • 所以该文件不存在 :) 检查路径名
    • hi 你的意思是路径名吗?file = File.join(Rails.root, 'app' 'models','assets', 'files', 'test_list.txt')
    • 是的,如果您收到该错误,则表示该文件不存在
    • @alie 看起来也是一个非常奇怪的文件路径“.../app/models/assets/files/...”你确定models 属于那个路径吗?
    【解决方案2】:

    我想你错过了一个逗号。你可以写下面的代码。

    file = File.join(Rails.root, 'app', 'models','assets', 'files', 'test_list.txt')

    阅读内容

    File.read(file) do |file|
      file.each do |line|
        p line
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      相关资源
      最近更新 更多