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

Ruby on Rails:路由问题:在链接中看不到操作

  •  1
  • NullVoxPopuli  · 技术社区  · 15 年前

    只是想用authlogic建立一些基本的链接。

    <% if current_user %>
        <div class="register_new_user">
            <%= link_to "Register", new_user_path %>
        </div>
        <div class="login_existing_user">
            <%= link_to "Log In", new_user_session_path %>
        </div>
    
    <% else %>
        <div class="logout">
            <%= link_to "Log Out", :controller => :user_sessions, :action => :destroy %>
        </div>
    <% end %>
    

    奇怪的是 destroy_user_session_path 不存在,这是我想用的。但当我点击注销链接时 localhost:3000/user_sessions/

    class UserSessionsController < ApplicationController
      before_filter :require_no_user, :only => [:new, :create]
      before_filter :require_user, :only => :destroy
    
      def new
        @user_session = UserSession.new
      end
    
      def create
        @user_session = UserSession.new(params[:user_session])
        if @user_session.save
          flash[:notice] = "Login successful!"
          redirect_back_or_default account_url
        else
          render :action => :new
        end
      end
    
      def destroy
        current_user_session.destroy
        flash[:notice] = "Logout successful!"
        redirect_back_or_default new_user_session_url
      end
    end
    

    所以,我很困惑为什么 new_user_session_path 销毁用户会话路径 不。

      map.resource :user_session
      map.resource :account, :controller => "users"
      map.resources :users
    
      map.root :controller => "info", :action => "home"
      map.connect "/home", :controller => "info", :action => "home"
    
    3 回复  |  直到 15 年前
        1
  •  5
  •   Jaime Bellmyer    15 年前

    在您的视图中执行此操作:

    <%= link_to "Log Out", user_session_path, :method => :delete %>
    

    为什么你不能 destroy_user_session_path

    这应该能解决你的问题。

        2
  •  0
  •   Olly    15 年前

    要更新和删除,需要提供方法作为参数:

    <%= link_to "Log Out", user_session_path, :method => :delete %>
    
        3
  •  0
  •   jordinl    15 年前

    我认为你应该用:

    <%= link_to "Log Out", :controller => :user_session, :action => :destroy %>