2009-10-03 30 views
0

我想使用Authlogic來保護一些就地編輯器字段,我有一個頁面。我已經保護了我的控制器中的所有方法,但它看起來像in_place_editor正在調用一些奇怪的生成的東西,甚至不會顯示在我的路由中,如「/ quotes/set_quote_text/1」。第一,有沒有一個網站能夠更多地瞭解這些「祕密」路線?或者,這是在編輯補充說,我不知道?當我顯示所有路線時,它甚至不會顯示出來,這讓人感到不安。authlogic和ajax就地編輯導軌,也路由問題

假設我確實發現了這一點,我不知道如何保護我的控制器中不是方法的東西。我可以保護整條路線嗎?

另一個問題是,即使我限制了更新路線,就地編輯器字段也會渲染所有內容。我會想象,這樣做的方式是創建一個幫助器,根據用戶是否登錄來呈現適當的版本。我只是不確定我要檢查是否有人登錄,因爲我一直在控制器中執行所有操作。另外,有關提示:部分​​只會渲染2個版本中的一個部分取決於登錄狀態,還是有另一種方法來做到這一點?

謝謝!

回答

1

默認情況下Rails包含以下途徑:

map.connect ':controller/:action/:id' 
map.connect ':controller/:action/:id.:format' 

而且,正如你可能知道,所有的公共控制方法作爲控制器動作。

考慮以下控制器:

class SampleController < ActionController::Base 
    def test 
    render :text => "text" 
    end 
end 

於是用缺省路由,/sample/test將調用SampleController#test

而且值得了解的是,in_place_edit_for(object, attribute, options = {})定義了名爲set_#{object}_#{attribute}控制器上的新方法。在你的情況下,這是set_quote_text

回答您的問題:

  • 爲什麼沒有路線rake routes顯示: 幾乎可以肯定,這是因爲它使用的是我談到在開始默認路由。我經常刪除這些路線,以便只使用我明確定義的路線。
  • 如何保護in_place_edit動作?: 現在您知道該操作的名稱,您可以將其添加到受保護操作的列表中。我假設你有沿before_filter :authentication_required, :only => LIST_OF_ACTIONS_REQUIRING_AUTHENTICATION的東西。但比這更安全的是使用除了並提供您不想保護的所有操作的列表:before_filter :authentication_required, :except => LIST_OF_ACTIONS_THAT_DON'T_REQUIRE_AUTHENTICATION

希望這就是您的需要。

+0

謝謝,the:except方法更安全,覆蓋更多的案例。不過,我想我仍然對它有幾條路線的事實感到困惑。如果我確實想要保護這些人,我怎麼可以這樣做,因爲每個屬性都有很多路線產生?我能否全面保護所有set_ routes? – 2009-10-05 18:11:04

+0

我不確定你的意思。每個屬性只能生成一條路由,除非您指的是其他內容。 – 2009-10-05 22:36:02