2011-10-06 61 views
0

我使用AJAX的CRUD,並在每個模型我必須設置所有的行動,但只有「搞定」的類型,像這樣如何創建在軌設置路由的模板3

get "brands/create" 
get "brands/update" 
get "brands/new" 
get "brands/edit" 
get "brands/destroy" 

如何創建我正在使用的一組鬃毛,只是爲了避免重複。第二點 - 當我試圖使用resources :brands(我可以發送像默認類型的ajax請求,它是否正確的方式?),有標準的重定向工作,但我不想改變它的HTML在每一個行動中,因爲我根本不使用它。現在我不呈現任何動作,自動運行。

+0

爲什麼你必須使用'GET'? – Bohdan

+0

有什麼區別?無論如何,我無法使用資源。 – zishe

+0

僅使用'GET'和使用'GET/POST'的區別幾乎與不使用降落傘或使用一個跳傘的跳傘相同:) – Bohdan

回答

2

首先,您真的很重要,不應該只做GET,因爲它會讓您的應用程序非常脆弱。我可以進一步舉例說明爲什麼你不應該首先解決實際問題。

爲了讓您的路線更加乾燥,您可以在單獨的模塊中創建自定義路線助手並使用它們。通過在RAILS_ROOT/lib文件夾中創建一個route_helpers.rb開始,然後讓它看起來像這樣:

class ActionDispatch::Routing::Mapper 

    def my_resources(*args) 
    args.each do |res| 
     get "#{res}/create" 
     get "#{res}/update" 
     get "#{res}/new" 
     get "#{res}/edit" 
     get "#{res}/destroy" 
    end 
    end 
end 

然後你就可以在你的routes.rb中使用的路線是這樣的:

require 'route_helpers' 

AppName::Application.routes.draw do 

    my_resources :brands 

end 

也不要忘記要求我的例子中的route_helpers。

現在,不要!像我的例子那樣做。我同意不重複自己是件好事,但標準資源爲什麼會按照它的方式生成路由是有原因的。 GET僅用於讀取,不會創建,更新並且不會銷燬記錄。

如果您創建鏈接以銷燬某個項目,並且搜索引擎開始抓取您的站點以對其進行索引,那麼它將跟隨get命令和BAM的鏈接....您的記錄被刪除。 如果您已登錄您的網站以防止這種情況發生,那麼如果您的用戶已登錄,然後在另一個標籤頁中訪問我擁有img標籤的頁面,並將其src設置爲yourdomain.com/brands /銷燬那麼用戶瀏覽器與登錄會話將嘗試獲取並下載圖像和BAM .....你的記錄再次被刪除。

這只是一些例子,但重點仍然是,爲了您自己,不要使用GET協議。

+0

謝謝,現在我明白了爲什麼不使用GET。 – zishe