2011-05-09 47 views
0

鑑於:Rails升級:服務器說,一旦路由不存在!

以下部分:

<%= form_for @user_session, :url => user_session_path do |f| %> 
    <%= f.error_messages %> 
    <span class="field-group"> 
    <div> 
     <%= f.label :login, "Login Name:" %><br /> 
     <%= f.text_field :login %><br /> 
    </div> 
    </span> 
    <div class="clear"></div> 
    <span class="field-group"> 
    <div> 
     <%= f.label :password, "Password:" %><br /> 
     <%= f.password_field :password %> <span class="hint">Reminder: Your password is case sensitive.</span><br /> 
    </div> 
    </span> 
    <div class="clear"></div> 
    <span class="field-group"> 
    <div> 
     <%= f.check_box :remember_me %> <%= f.label :remember_me %> 
    </div> 
    </span> 
    <div class="clear"></div> 
    <%= f.submit "Login" %> 
<% end %> 

和以下路線:

$ rake routes | grep user_session | grep show 
user_session GET /user_session/:id(.:format) {:action=>"show", :controller=>"user_session"} 

和以下路線配置:

# user session stuff 
resources :user_session do 
    member do 
    put :forgot_password 
    put :terms 
    get :terms 
    end 
end 
match '/login', :to => 'user_sessions#new', :as => 'login' 
match '/logout', :to => 'user_sessions#destroy', :as => 'logout' 

問題:

當我調用使用這個部分,我得到以下錯誤頁面:

ActionController::RoutingError in User_sessions#new 

Showing /app/views/edit_shared/_login.html.erb where line #2 raised: 

No route matches {:action=>"show", :controller=>"user_session"} 

提取的源(左右線#2):

1: 
2:  <%= form_for @user_session, :url => user_session_path do |f| %> 
3:  <%= f.error_messages %> 
4:  <span class="field-group"> 
5:   <div> 

所以這條路線存在,但鐵軌說它沒有。那麼是什麼給了?直到我開始升級到Rails 3.0.5爲止沒事。

回答

0

您的線路只接受GET的請求。表單默認發送POST請求。

編輯: 首先,你應該用你命名的路由,而不是user_session_path

<%= form_for @user_session, :url => login_path do |f| %> 

而且要執行的操作是create,不new(其顯示形式):

match '/login', :to => 'user_sessions#create', :as => 'login' 
+0

ël,看我的編輯。我添加了我的'user_session'路由信息。我認爲使用'資源:user_session do ... end'足以獲得我需要的路由。我應該添加什麼? – DJTripleThreat 2011-05-09 23:46:22

+0

我更新了答案。 – 2011-05-10 06:30:40

0

嘗試從您的表單中刪除:url => user_session_path。通過指定form_for @user_session,Rails將查找user_session RESTful路由併爲您生成URL。

0

更改:url => user_session_path:url => {:action => :create}訣竅。

+0

但是,然後URL可能不是「/登錄」。也許這部分並不重要。在這種情況下,我建議你應用Brandon的答案。 – 2011-05-10 06:34:28