2011-11-10 55 views
1

我在軌道上有簡單的應用程序。我需要發佈一些文章。我的應用程序已設計授權。在posts_controller.rb before_filter :authenticate_user!, :except => [:show, :index]。 在索引頁上是link_tobutton_tonew_post_path。如果我沒有登錄並嘗試link_to,我將重定向到/sign_in頁面。如果我按button_to我重定向了/posts/new頁面,我看到路由錯誤No route matches [POST] "/posts/new"。 請告訴我,有什麼不對?'button_to'和'link_to'重定向與設計

回答

1

聽起來像您的應用程序的行爲完全如預期。您有一個before_filter表示用戶需要進行身份驗證才能創建新的Post。因此,當您嘗試GET /posts/new時,您將被重定向到登錄頁面。

假設您使用的是資源豐富的路線,/posts/new頁面將僅在GET上提供,因此您嘗試POST會導致錯誤。

如果你想未經身份驗證的用戶能夠創建的帖子,改變你之前過濾器

before_filter :authenticated_user!, :except => [:show, :index, :new, :create] 
+0

是的,我明白。我問這個問題是錯誤的。我需要'button_to'表現爲'link_to'。如果我沒有登錄並按'button_to',我被重定向到'sign_in'頁面。它怎麼樣? – Eugene