了解Rails URL参数

时间:2016-05-07 12:39:31

标签: ruby-on-rails

对基本问题表示歉意,但我对Rails是全新的,并且我正在尝试调试现有的应用程序。

具体来说,我正在尝试对URL进行反向工程,给出以下控制器:

def find_by_foo
    params.require(:foo).permit(:bar1, :bar2)
end

路线如下:

get 'find_by_foo', on: :collection

我甚至有一个规范:

it "should not be successful" do
    get :find_by_foo, params: {foo: BarStuff}
    expect(response).to_not be_success
    expect(response).to have_http_status(401)
 end

我试图弄清楚如何通过我的REST客户端传递这些参数。我尝试了以下URL结构:

api/v1/collections/find_by_foo?foo={bar1: 0, bar2: 0}
api/v1/collections/find_by_foo/foo/0/0
api/v1/collections/find_by_foo?params={foo: {bar1: 0, bar2: 0}}

所有现在都有用。这里的结构是什么?

2 个答案:

答案 0 :(得分:3)

你的意思是这样吗?

library(jpeg)
# Select your Zip file or replace file.choose() with exact path
zippath <- file.choose() 
names.files <- unzip(zippath, list=TRUE)
readJPEG(unzip(zippath, names.files$Name[3]))

ActionController Overview

中提供了对此的概述

您也可以在控制台中致电

paste

(或者无论实际的url帮助方法是什么,我只是根据路线进行猜测),并且您将获得可以使用的路径的CGI转义版本。您可以将其包含在api/v1/collections/find_by_foo?foo[bar1]=0&foo[bar2]=0 中以便于阅读。例如,在我的应用程序中:

app.find_by_foo_api_v1_collections_path(foo:{ bar1: 0, bar2: 0})

答案 1 :(得分:0)

您可以打印出路线并按find_by_foo过滤以查看正确的结构。在终端中运行:

$ rake routes | grep find_by_foo

希望这有帮助。