2013-02-15 37 views
0

我在使用omniauth使用Twitter登錄的Rails應用程序中遇到了無路由匹配錯誤。我開始用Railscast沿着以下的應用,其中登錄Twitter的用戶在會話控制器創建這樣沒有匹配的顯示操作路由

class SessionsController < ApplicationController 
def create 
    twitteruser = Twitteruser.from_omniauth(env["omniauth.auth"]) 
    session[:twitteruser_id] = twitteruser.id 
    redirect_to twitterquestions_url, notice: "Signed in!" 
end 

我創建了一個表來存儲用戶喜歡這個

def change 
    create_table :twitterusers do |t| 
     t.string :provider 
     t.string :uid 
     t.string :name 
     t.string :image 

     t.timestamps 
    end 
    end 
的Twitter信息

這是一個databaseentry

=> [#<Twitteruser id: 1, provider: "twitter", uid: "1121308772", name: "mytwitteraccou t", image: "http://a0.twimg.com/profile_images/3164285746/.", created_at: "2013-02-12 23:52:44", updated_at: "2013-02-12 23:52:44">] 

我還創建了一個Twitterusers控制器,這樣,這樣我可以顯示用戶

class TwitterusersController < ApplicationController 

    def show 
    @twitteruser = Twitteruser.find(params[:id]) 
    end 
end 

在路由文件

resources :twitterusers 

基於耙路線的輸出,I創建到currentusers一個鏈接簡檔這樣的(並且還增加在視圖中show.html.erb文件)

<li>Signed in as <%= link_to "current_user.name", twitteruser_path %>!</li> 

耙路線

twitterusers GET /twitterusers(.:format)       twitterusers#index 
         POST /twitterusers(.:format)       twitterusers#create 
     new_twitteruser GET /twitterusers/new(.:format)      twitterusers#new 
     edit_twitteruser GET /twitterusers/:id/edit(.:format)    twitterusers#edit 
      twitteruser GET /twitterusers/:id(.:format)      twitterusers#show 
         PUT /twitterusers/:id(.:format)      twitterusers#update 
         DELETE /twitterusers/:id(.:format)      twitterusers#destroy 

當我的錯誤,我想知道,如果它與用戶在sessions_controller創建的事實做,所以後來我創建的會話控制器

sessions_controller

def show 
    @twitteruser = Twitteruser.find(params[:id]) 
end 

表演動作,創造了基於耙航路

resources :sessions 

,然後會議資源,我創建了以下鏈接

  • 我簽名n as <%= link_to「current_user.name」,session_path%>!
  • ,但得到了同樣的錯誤

    sessions GET /sessions(.:format)        sessions#index 
             POST /sessions(.:format)        sessions#create 
          new_session GET /sessions/new(.:format)       sessions#new 
          edit_session GET /sessions/:id/edit(.:format)     sessions#edit 
           session GET /sessions/:id(.:format)       sessions#show 
             PUT /sessions/:id(.:format)       sessions#update 
             DELETE 
    

    目前已經在會話控制器,這些路線

    match 'auth/:provider/callback', to: 'sessions#create' 
    match 'auth/failure', to: redirect('/') 
    match 'signout', to: 'sessions#destroy', as: 'signout' 
    

    有人能指出我在做什麼錯?

    回答

    2

    嘗試改變:

    <%= link_to "current_user.name", twitteruser_path %> 
    

    到:

    <%= link_to current_user.name, twitteruser_path(current_user) %> 
    

    和修改本節只渲染如果current_user填充:

    <% if current_user %> 
        Your link here 
    <% end %> 
    
    +0

    感謝您的幫助 – Leahcim 2013-02-15 05:46:20