我正在创建一个API来处理一些幻灯片,那就是我的路由:
scope "/api/v1" do
scope "/slides" do
post "/" => "slides#create"
get ":slide_id" => "slides#show"
put ":slide_id" => "slides#update"
end
end
正如您所看到的,只有一个get
需要:slide_id
参数,但如果我想显示该表中的所有结果,该怎么办?我该怎么办?
scope "/api/v1" do
scope "/slides" do
post "/" => "slides#create"
get "/" => "slides#show_all" # here's the magic
get ":slide_id" => "slides#show"
put ":slide_id" => "slides#update"
end
end
你看到了“神奇”吗?无论如何,我觉得这不是做我想要的最好的方法,但是我没有看到任何替代方法,只是为了检查方法show
是否有一些参数,如果有的话,那么只显示用户的内容想要,否则,显示一切。
你能给我一些想法吗?
答案 0 :(得分:1)
您应该调用该操作index
。是的,有一个单独的动作来显示记录集合是完全有效的解决方案。带有附加参数的变体闻起来有点......如果您有疑问,可以随时查看一些示例。例如Twitter REST API。
答案 1 :(得分:1)
我不确定我是否理解你的要求。
您可以按照以下方式进行路由。
scope "/api/v1" do
scope "/slides" do
post "/" => "slides#create"
get "(:slide_id)" => "slides#show" # slide_id param is optional
put ":slide_id" => "slides#update"
end
end
在show动作中,检查是否传递了slide_id参数。