2011-08-22 55 views
1

我用在軌2.3以下的代碼,而不必有一個名爲路線:的Rails 3.0的form_tag路由

<% form_tag :controller => :session, :action => :login do %> 

<ul> 
    <li><%= label_tag :email %><%= text_field_tag :email %></li> 
    <li><%= label_tag :password %><%= password_field_tag :password %></li> 
    <li><%= submit_tag 'Sign In', :id => 'login_submit' %></li> 
</ul> 

<% end %> 

不過,我我的應用程序轉換爲3.0應用程序,我得到一個錯誤信息說「沒有路線匹配」/會話/登錄「。」

我需要在rails 3.0中創建一個命名的路由,還是有更好的方法來做到這一點?

創建命名路由似乎不是正確的方法,因爲人們可以通過url調用它。

+0

請提供路線詳情。 –

+0

到目前爲止我的路線還是錯誤信息? – Brian

+0

@Brian請[不要將簽名或標語添加到您的帖子](http://stackoverflow.com/faq#signatures)。 – meagar

回答

0

您可以添加資源路線會話:

resoures :sessions 

和固定形式:

= form_tag sessions_path do 
    ... 

記住重命名你的會話控制器的新

UPD登錄操作:

或者你可以添加命名的路由E對於 '會話/登錄'

match 'session/login' => 'session#login', :as => :new_session 

及用途:

= form_tag new_session_path do 
+0

所以也許像資源:會話,:只=> [:新] – Brian

+0

我看到的問題是,有人可以輸入的網址somesite/sessions /新 – Brian

+0

好吧,聽起來不錯。我想我會創建一個before_filter來防止人們在已經登錄的時候嘗試創建新的會話。 – Brian

0

命名的路線是沒有必要的,但你應該申報這樣的事情在你的路由文件:

match "/sessions/login" => "sessions#login" 

在RoR 3中,「sessions#login」是「會話控制器的登錄動作」的簡寫。

路線上的official RoR guide寫得非常好,應該會幫助你很多。