在Rails控制器中我称之为:
redirect_to :controller => "user", :action => "login"
我的user_controller.rb
定义了以下方法:
class UserController < ApplicationController
def login
###
end
当我调用redirect_to
方法时,我在浏览器中收到此错误:No action responded to show.
检查服务器日志我看到这一行:
Processing UserController#show (for 127.0.0.1 at 2009-12-19 12:11:53) [GET]
Parameters: {"action"=>"show", "id"=>"login", "controller"=>"user"}
最后,我在routes.rb
map.resources :user
知道我做错了吗?
答案 0 :(得分:1)
hack-y的答案是更改routes.rb中的以下行
map.resources :user
到
map.resources :user, :collection => { :login => :get }
但由于各种原因这很糟糕 - 主要是因为它打破了RESTful范式。相反,您应该使用SessionController并使用sessions/new
登录。您可以通过routes.rb
/login
map.login 'login', :controller=>"sessions", :action=>"new"
答案 1 :(得分:0)
尝试
redirect_to :url => {:action => 'login', :controller => 'user'}
或者您可能需要删除路由或编写自己的路由。路由映射POST以创建,PUT更新等。
答案 2 :(得分:0)
您需要在routes.rb中添加login
操作。请参阅this excellent guide。
答案 3 :(得分:0)
我最终做的是创建一个新的login_controller
来处理登录。
这是来自我的routes.rb文件的相关位:
map.login '/login', :controller => 'login', :action => 'login'
感谢您的帮助......