当前位置:  开发笔记 > 编程语言 > 正文

Ruby on Rails:路由问题:在link_to中没有看到动作

如何解决《RubyonRails:路由问题:在link_to中没有看到动作》经验,为你挑选了1个好方法。

只是尝试使用authlogic设置一些基本链接.他们来了

<% if current_user %>
    
<%= link_to "Register", new_user_path %>
<% else %>
<%= link_to "Log Out", :controller => :user_sessions, :action => :destroy %>
<% end %>

同样奇怪的是,destroy_user_session_path它不存在,而且我更喜欢使用它.但是当我点击退出链接时,它只需要我localhost:3000/user_sessions/

这是我的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有效,而destroy_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"

Jaime Bellmy.. 5

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

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

你不能只有一个destroy_user_session_path方法的原因是因为那将是一个GET请求,它破坏了RESTful路由约定.GET请求仅用于检索数据,而不是创建,更新或销毁数据.

这应该可以解决您的问题.



1> Jaime Bellmy..:

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

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

你不能只有一个destroy_user_session_path方法的原因是因为那将是一个GET请求,它破坏了RESTful路由约定.GET请求仅用于检索数据,而不是创建,更新或销毁数据.

这应该可以解决您的问题.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有