代码之家  ›  专栏  ›  技术社区  ›  cbrulak

RubyonRails:路由问题:控制器操作查找应查找final的时间

  •  0
  • cbrulak  · 技术社区  · 16 年前

    背景:尝试使用TwitterGem来实现RubyonRails。

    路线:

    map.resources :twitter_sessions
    map.finalize_twitter_sessions 'twitter_sessions/finalize', :controller => 'twitter_sessions', :action => 'finalize'
    

    (Twitter会话是我的应用程序中Twitter会话的控制器)。

    视图有一个文件 new.html.erb 非常简单:

    <% form_tag(twitter_sessions_path)  do |f| %>
       <p><%= submit_tag "twitter!" %></p>
    <% end %>
    

    以及twitter_sessions_controller.rb:

    def new
    end
    
    def create
      oauth.set_callback_url(finalize_twitter_sessions_url)
    
      session['rtoken']  = oauth.request_token.token
      session['rsecret'] = oauth.request_token.secret
    
      redirect_to oauth.request_token.authorize_url
    end
    
    def destroy
      reset_session
      redirect_to new_session_path
    end
    
    def finalize
      oauth.authorize_from_request(session['rtoken'], session['rsecret'], params[:oauth_verifier])
    
      profile = Twitter::Base.new(oauth).verify_credentials
      session['rtoken'] = session['rsecret'] = nil
      session[:atoken] = oauth.access_token.token
      session[:asecret] = oauth.access_token.secret
    
      sign_in(profile)
      redirect_back_or root_path
    end
    

    但是,在我点击“twitter”按钮后,我会得到这个错误:

    401 Unauthorized
    
    .../gems/oauth-0.3.6/lib/oauth/consumer.rb:200:in `token_request'
    .../gems/oauth-0.3.6/lib/oauth/consumer.rb:128:in `get_request_token'
    .../gems/twitter-0.9.2/lib/twitter/oauth.rb:32:in `request_token'
    .../gems/twitter-0.9.2/lib/twitter/oauth.rb:25:in `set_callback_url'
    app/controllers/twitter_sessions_controller.rb:7:in `create'
    

    如果我转到最终确定的URL, http://localhost:3000/twitter_sessions/finalize ,直接,我得到这个错误:

    Unknown action
    
    No action responded to show. Actions: create, destroy, finalize, isLoggedInToBeta, login_required, and new
    

    有什么想法吗? 谢谢

    1 回复  |  直到 16 年前
        1
  •  4
  •   Andy Gaskell    16 年前

    我想尝尝 little different with your routes 以下内容:

    map.resources :twitter_sessions, :collection { :finalize => :get } #use correct verb