2016-05-06 64 views
0

我创建了一个图书馆管理系统作为大学作业的一部分。我目前坚持获得采摘的结果。Ruby on Rails:存储采摘结果

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

从做外部研究,我发现了object.pluck。

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

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

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

+0

在Rails中,控制器中定义的实例变量可用于视图。因此,只需将此添加到控制器操作中:'@books = Book.pluck(:isbn,:title,:description,:author,:status)'并循环访问'@ books'来打印您的'index.html .erb' like '@books.each do | book |' – dp7

+1

听起来不像你想要的那样 - 我只是使用'Book.all' –

回答

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(真的很有用)。

+0

books_controller中的book对象被称为(@)book it = Book.all所以我的网站(home.html.erb)的索引我有以下循环:(@)book.each do | book | link_to'Edit book',edit_book_path(book)end但是找不到每个命令。 – DetectiveClarke

+0

@DetectiveClarke能够在'home.html.erb'中使用'@ books',您必须在适当的控制器的操作中定义它。控制器的动作必须有相应的视图,只有你可以使用'@ books'变量。否则,在你的家里。html.erb'你可以简单地做'Book.all.each do | book | = link_to'编辑书籍',edit_book_path(book)'(没有任何其他变量定义) –

+0

谢谢安德烈,完美的工作! – DetectiveClarke

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贝罗等W示例

@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]) 

可能这会为你工作

+0

这个'result_arr' 1)有错误/非常规的名字2)它是本地的,并且在任何视图中都不可用3)即使它是可见的,你将如何迭代这个变量?这是没有用的答案 –

+0

@AndreyDeineko我已更新代码,感谢您的帮助 –

+0

这仍然不是非常有效率,并没有太大的意义..''''''会抛出'未定义的方法'错误和更少的效率低下 –