如何用ruby打开文件?

时间:2019-05-20 09:37:18

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

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

这是我的文件目录“ app”,“资产”,“文件”,“ test_list.txt” 'app','controllers','users controller'

您能帮忙吗?谢谢

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



2 个答案:

答案 0 :(得分:0)

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

更改

File.open

File.open(file)

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

答案 1 :(得分:0)

我认为您错过了逗号。您可以编写以下代码。

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