Rails设置显示根据请求生根的操作

时间:2013-01-09 20:21:04

标签: ruby-on-rails ruby routing

在我的rails app中,我有推车控制器的路线:

resources :carts

所以在布局中,根据我的逻辑,我有:

= link_to "Моя корзина", @cart

在浏览器中我看到例如:

******:3000/carts/112

然而,我可以将嵌套的rails路由显示为类似帖子的请求吗?所以我会:

******:3000/carts/

也耙路线:

arts GET    /carts(.:format)                                                          carts#index
                                  POST   /carts(.:format)                                                          carts#create
                         new_cart GET    /carts/new(.:format)                                                      carts#new
                        edit_cart GET    /carts/:id/edit(.:format)                                                 carts#edit
                             cart GET    /carts/:id(.:format)                                                      carts#show
                                  PUT    /carts/:id(.:format)                                                      carts#update
                                  DELETE /carts/:id(.:format)                                                      carts#destroy
                             cart POST   /carts/:id(.:format)                                                      carts#show

我现在如何为自己的方法编写它...但是如何使用内置节目?

我需要更改show route,因此show的id不是通过url发送为get-param,而是作为请求中的post-param ...

3 个答案:

答案 0 :(得分:1)

你可以添加这样的路线(routes.rb)

例如:

resources :carts do
  member do
    post :add
 end
end

more about rails routes

答案 1 :(得分:1)

resources方法只是放入一堆预定义的路由,如here所述。

具体来说,它正在添加等效的

get '/carts/:id' => 'carts_controller#show'
post '/carts' => 'carts_controller#create'
...

如果您想使用其他一组路线,请不要使用resources,而只是定义您自己的路线。

此外,您无法通过这种方式向用户隐藏购物车ID。如果请求包含ID,则表示用户可以看到它。他可能不得不使用Firebug或通过查看页面源而不是他的地址栏来查看它,但它仍然不是秘密或以任何方式受到保护。

答案 2 :(得分:-1)

只需在您的控制台中运行rake routes,然后查看您拥有的路线。

您还可以在http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

了解有关RESTful路线的更多信息