嗯.. 我认为您的问题对于刚开始使用 Rails 的人来说已经足够有效了 - 但请注意,您应该使用代码块和引号来格式化您的问题。
Rails 中的params 哈希用于在用户请求(可以是浏览器或 API 请求)和 Rails 后端之间传递数据。
在您给出的示例中,参数是姓名和电子邮件,任何通过问号(?)后的 URL 传递的数据都将在 params 中发送。对该数据的需求取决于特定的操作,您将在控制器中“处理”该请求。
2 个参数样本:
- 您经营一家书店网站,并为用户提供一个搜索表单以查找一本书。该表单可能包含作者、标题、系列名称。用户知道该系列的相同是“发散”。但他们不记得作者了,他们想查看该系列的所有书籍。
您的 rails 参数将如下所示:
{"utf8"=>"✓", "authenticity_token"=>"24hb1lZ93NnOHOXmSB5STy7UYPmfH/Xx7dho5y/
MHeQhXqWUGNv58WexwoJNqYubsSQqj+5A==", "author"=>"","series_name"=>"divergent",
"title"=>"", "commit"=>"Search", "controller"=>"books", "action"=>"search"}
因此,在您的 books_controller.rb 中,您将有一个称为搜索的操作。好吧,您的用户请求了一个搜索词,现在您需要执行搜索并将图书列表返回给他。
所以你的动作可能看起来像
def search
# In this case your are offering 3 different filters, so you might have 3 different searches that you flatten to a single results array.
authors = Book.where(author: params[:author])
series = Book.where(series_name: params[:series])
title = Book.where(title: params[:title])
@books = [authors,series,title].flatten
end
现在您必须在 app/views/books/search.html.erb 中显示您的结果——随着学习 edgeguides 教程的进展,您将继续理解这些结果。
-
接下来,示例。假设您有一个送货车和电子商务网站。一位用户正在浏览女装区,正在查看围巾。假设她只想找到紫色围巾,而您为用户提供了一组颜色选项过滤器。她点击紫色按钮,你的参数可能看起来像
{"dept"=>"scarves", "color"=>"purple", "controller"=>"products", "action"=>"index"}
本例中的参数是
这意味着您的页面正在响应 Products 控制器和名为“index”的操作。现在,在该操作中,您可以根据围巾和紫色创建过滤器,为用户提供他们需要的东西。
如果您在任何时候想要或需要查看 params 哈希以便更好地了解如何处理它,您可以使用
直接在浏览器中查看它
raise params.inspect
你可以在控制器或视图中使用它