【问题标题】:Ruby on Rails 3 how to display information from the databaseRuby on Rails 3 如何显示来自数据库的信息
【发布时间】:2013-04-24 11:52:48
【问题描述】:

我有一个数据库,我想通过按一个按钮从中选择数据。
运行 $ rails c

1.9.2p290 :001 >Book.find_by_price("50")
# => #<Book id: 1, price: "50"><Book id: 2, price: "50"><Book id: 3, price: "50">

在控制台中,他找到了正确的信息,但是如何在视图中显示呢?
我尝试在控制器中编写一个方法。

books_controller.rb
class BooksController < ApplicationController
  def index
    @books = Book.all
    @metod = Book.find_by_price("50")
  end
 #...
end

然后,在视图中

view/books/index.html.erb
<%= link_to @metod %>

但它不起作用。请告诉我它是如何完成的?
我希望在单击视图中的按钮时显示这些数据。

【问题讨论】:

    标签: ruby-on-rails activerecord activeview


    【解决方案1】:

    您可以使用循环从@books 获取所有值

    @books.each do |book|
      <%= book.name %>
      <%= book.price %>
    end
    

    在做

    @metod = Book.find_by_price("50")
    

    @metod 是一个实例变量,要访问它,你可以做@metod.price

    【讨论】:

    • 您所描述的 activerecord 自动创建的内容,例如,我的数据库中有九本书价格不同,我想制作一个按钮,按下该按钮时将仅显示九个条目中的三个
    • erm,也许你可以链接到一个路径并传递参数,在索引中,你可以检查,如果 param[:something].blank?别的东西@metod = Book.find_by_price("50")
    • 谢谢,也许,但我希望结果仅在我单击按钮时出现,而不是永久显示
    【解决方案2】:

    如果您使用 ActiveRecord 的动态查找器,find_by_price 应该返回一条记录。但是在控制台输出中,它返回一个数组,所以我假设您在 Book 模型中手动创建了该方法。如果预期的输出是列出所有价格为 50 的书籍,请在您的视图中使用以下代码。

    <% @metod.each do |book| %>
      <%= link_to book, book %>
    <% end %>
    

    此代码循环遍历@metod 中的每本书,并显示一个链接,该链接指向相应控制器的show 操作。

    【讨论】:

    • 嗯,我发现 find_by 只返回一条记录,而 find_all_by 只返回数组?
    • 没错。但在问题中,find_by_price 返回一个数组(如控制台 sn-p 所示)。这就是为什么我在回答中有解释。
    • 谢谢,这项工作!我犯了一个错误,并在 where(:price => "50") 上更改了 find_by_price("50") 我如何才能调用该结果的按钮?
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多