Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用RubyonRails参数_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何使用RubyonRails参数

Ruby on rails 如何使用RubyonRails参数,ruby-on-rails,Ruby On Rails,我正在尝试学习RubyonRails,并遵循“”的指南。 我现在被这件事缠住了 “确保在使用params方法时牢牢掌握它 相当经常 让我们考虑一个示例URL: 在此URL中 params[:username] 将等于“dhh”和 就等于"dhh@email.com“ 我在理解参数是什么以及指南希望我如何使用这些参数时遇到了一些困难。呃..我认为你的问题对于刚开始使用Rails的人来说足够有效-不过请注意,你应该用代码块和引号格式化你的问题 Rails中的params散列用于在用户请求(可以

我正在尝试学习RubyonRails,并遵循“”的指南。 我现在被这件事缠住了

“确保在使用params方法时牢牢掌握它 相当经常

让我们考虑一个示例URL:

在此URL中

params[:username] 
将等于“dhh”和

就等于"dhh@email.com“


我在理解参数是什么以及指南希望我如何使用这些参数时遇到了一些困难。

呃..我认为你的问题对于刚开始使用Rails的人来说足够有效-不过请注意,你应该用代码块和引号格式化你的问题

Rails中的
params
散列用于在用户请求(可以在浏览器中或API请求中)和Rails后端之间传递数据

在您给出的示例中,参数是name和email,在问号(?)之后通过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中显示您的结果——在学习EdgeGuide教程的过程中,您将继续了解这些结果

  • 接下来,举个例子。假设你有一个送货车和电子商务网站。一个用户正在浏览女装部分,查看围巾。假设她只想找到紫色围巾,你给用户一套颜色选项过滤器。她单击紫色按钮,你的参数可能看起来像

    {"dept"=>"scarves", "color"=>"purple", "controller"=>"products", "action"=>"index"}
    
  • 本例中的参数为

    • 颜色
    • 控制器
    • 行动
    这意味着您的页面正在响应产品控制器和名为“索引”的操作。现在,在该操作中,您可以从围巾部和紫色创建过滤器,以满足用户的需要

    如果在任何时候您想要或需要查看参数散列,以便更好地了解如何处理它,您可以使用直接在浏览器中查看它

    raise params.inspect 
    

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

    欢迎使用StackOverflow。请花一点时间阅读下面的提问指南。参数是一个散列(具有不同的访问权限),用户名和电子邮件是散列的键。我想说的是阅读一个基本教程,但这似乎是你已经学会的地方。
    raise params.inspect