Ruby on Rails:存储pluck结果

时间:2016-05-06 11:50:49

标签: ruby-on-rails ruby

我正在创建一个图书馆管理系统,作为大学任务的一部分。 我目前仍然坚持获得采摘的结果。

我在这里尝试的任务是显示当前在表格中的书籍列表。 我主要是一名PHP程序员,所以ruby on rails对我来说是一个全新的世界。

从外部研究中我发现了关于object.pluck。

Book.pluck(:isbn,:title,:description,:author,:status)

我对上述片段的了解是,我从所有书籍对象中提取细节。 我想要做的是有一个循环,输出每本书后跟一个编辑按钮。 在PHP中,这将是for循环内部的一种形式。但是对于红宝石,我真的不知道该怎么做

在我的脑海中,我想将采摘的结果存储在一系列书籍中[]。 然后使用循环迭代该循环并输出存储在索引i的书的详细信息。 但我不知道如何存储采摘的结果?

2 个答案:

答案 0 :(得分:2)

您可以将整个图书集合分配给变量,然后在视图中使用它:

# in controller's action (most likely index)

@books = Book.all

# in index.html.* view (haml example):

- @books.each do |book|
  = link_to 'Edit book', edit_book_path(book)

确保通过the docs(非常有用)。

答案 1 :(得分:0)

您只需使用as_json

即可

示例:

@books = Book.all.as_json(only: [:id, :isbn,:title,:description,:author,:status])

然后迭代@books数组 即

- @books.each do |book|
   = link_to 'Edit book', edit_book_path(book['id'])

OR

您可以使用map,例如以下示例

@books = Book.all.map{ |b| {id: b.id, isbn: b.isbn, title: b.title, description: b.description, author: b.author, status: b.status}}

然后@books将输出作为书籍数组哈希..

然后你可以像下面的代码那样迭代它

- @books.each do |book|
   = link_to 'Edit book', edit_book_path(book[:id]) 

愿这对您有用