如何使用Ruby on Rails参数

时间:2016-04-10 17:41:51

标签: ruby-on-rails

我试图在轨道上学习红宝石,并且我按照" http://edgeguides.rubyonrails.org/getting_started.html#creating-articles"上的指南进行操作。 我现在坚持这个。

  

"确保您掌握params方法,因为您将使用它   相当经常。

     

让我们考虑一个示例网址:   http://www.example.com/?username=dhh&email=dhh@email.com

在此网址

params[:username] 

等于" dhh"和

params[:email] 

等于" dhh@email.com"。

我在理解这些参数是什么以及指南希望我如何使用它们时遇到一些麻烦。

1 个答案:

答案 0 :(得分:0)

呃..我认为你的问题对于有人开始使用Rails是有效的 - 尽管请注意你应该用代码块和引号格式化你的问题。

Rails中的params哈希存在于用户请求(可能在浏览器或API请求中)和Rails后端之间传递数据。

在您给出的示例中,参数是姓名和电子邮件,在问号(?)之后通过URL传递的任何数据都将以params发送。对数据的需求取决于特定的操作,您将在控制器中“处理”该请求。

2个params样本:

  1. 您运营书店网站并向用户提供搜索表单以查找图书。该表单可能包含作者,标题,系列名称。用户知道该系列的相同内容是“Divergent”。但他们不记得作者,他们希望看到系列中的所有书籍。
  2. 你的rails params看起来像:

    {"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教程时,您将继续了解这些结果。

    1. 接下来,举例。让我们说你有一个运输车和电子商务网站。用户正在浏览女性服装部分,看着围巾。让我们说她只想找到紫色围巾,你给用户一套颜色选项过滤器。她点击紫色按钮,你的参数可能看起来像

      {"dept"=>"scarves", "color"=>"purple", "controller"=>"products", "action"=>"index"}
      
    2. 这种情况下的参数是

      • 颜色
      • 控制器
      • 动作
      • 部门

      这意味着您的页面正在响应Products控制器和名为“index”的操作。现在,在该操作中,您可以从围巾部分和紫色部分创建过滤器,以便为用户提供他们所需的内容。

      如果您在任何时候想要或需要查看params哈希,以便更好地了解如何处理它,您可以使用

      直接在浏览器中查看
      raise params.inspect 
      

      您可以在控制器或视图中使用它