Почему я не могу получить доступ к хешу в Ruby? - PullRequest
0 голосов
/ 17 октября 2018

Я собираюсь добавить данные Book1 в хэш bl , но когда я запускаю код, он возвращает мне

: в `booklist ': неверное количество аргументов (задано 0, ожидается 1) (ArgumentError)

И это мой код.

class Book
  attr_accessor :title, :author, :language, :classification, :isbn, :book_id, :borrow_status



  def initialize(title, author, language, classification, isbn, book_id, borrow_status)
    @title = title
    @author = author
    @language = language
    @classification = classification
    @isbn = isbn
    @book_id = book_id
    @borrow_status = borrow_status
  end



  def booklist(bl)
     bl = {
    "Title " => @title.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Author " => @author.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Language " => (@language.title),
    "Classification " => @classification,
    "ISBN " => @isbn.to_s,
    "Book ID" => @book_id.to_s,
    "Status" => @borrow_status
    }
    end


  def put_booklist
    booklist.each do |x , y|
      puts "#{x}" , "#{y}"
    end
  end


end

books1 = Book.new("lonely planet: ireland","damian harper","english","tourism",9781786574459,1,"available")
books1.put_booklist

Я хотел бы знать, что с ним не так?

1 Ответ

0 голосов
/ 17 октября 2018

Ваш метод booklist ожидает параметр, но в этом вызове вы не передаете ничего

booklist.each do |x , y|

В любом случае, по определению для booklist вам не нужно и не используйте этот параметр.параметр.Переместить booklist в

def booklist
  {
    "Title " => @title.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Author " => @author.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Language " => (@language.title),
    "Classification " => @classification,
    "ISBN " => @isbn.to_s,
    "Book ID" => @book_id.to_s,
    "Status" => @borrow_status
  }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...