使用特定的HTTP谓词和路径参数配置Rails端点

时间:2017-03-27 17:40:10

标签: ruby-on-rails ruby

我有一个简单的Rails应用程序,并希望在以下位置公开GET端点:

GET http://localhost/widgets/{widget_id}/{fizz_id}

我想知道如何在我的{widget_id}和/或控制器中设置该端点的期望({fizz_id}routes.rb作为路径参数),例如{{ 1}}?

我知道您可以访问控制器内的WidgetsController,但我认为这只能让您访问表单参数和/或查询字符串参数。这里,这些ID是RESTful路径的一部分,我想知道:

  1. 如何配置以使端点实际为:params;和
  2. 如何从控制器方法/操作中访问这些ID的值;和
  3. 指定此端点仅适用于GET动词

2 个答案:

答案 0 :(得分:2)

  

我如何设置该端点的期望(使用{widget_id}   在我的routes.rb

中有{fizz_id}作为路径参数
# routes.rb
get '/widgets/:widget_id/:fizz_id', to: 'widgets#action'
# widgets_controller.rb
def action
  widget_id = params[:widget_id] # <- value of /:widget_id
  fizz_id   = params[:fizz_id]   # <- value of /:fizz_id
end

有关详细信息,请阅读documentation.

答案 1 :(得分:1)

您可以在此处找到有关Rails路由的所有信息:

http://guides.rubyonrails.org/routing.html

在你的routes.rb中加上这样一行:

get '/widgets/:widget_id/:fizz_id', to: 'widgets#show'

WidgetsController

def show
  execute(params[:widget_id], params[:fizz_id])
end