Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重定向到“”时参数数目错误(0..1为2) 错误图像_Ruby On Rails_Ruby_Arguments - Fatal编程技术网

Ruby on rails 重定向到“”时参数数目错误(0..1为2) 错误图像

Ruby on rails 重定向到“”时参数数目错误(0..1为2) 错误图像,ruby-on-rails,ruby,arguments,Ruby On Rails,Ruby,Arguments,home_controller.rb class HomeController < ApplicationController def home @activities = Activity.order("created_at DESC").page(params[:page]).per_page(5) end def login render end def logout session[:school_id] = nil session[:parent_id] =

home_controller.rb

class HomeController < ApplicationController

def home
 @activities = Activity.order("created_at DESC").page(params[:page]).per_page(5)
end

def login
  render 
end

def logout
  session[:school_id] = nil
  session[:parent_id] = nil
  session[:user_id] = nil

  redirect_to :controller => 'home', :action => 'login'
end
这是不对的,更不用说丑陋了。相反,在routes.rb中创建执行该操作的路由。例如:

get 'login' => 'home#login'
然后你会使用:

redirect_to login_path
奖金

****你应该仔细阅读一下铁路线路,以便制定更好的线路****

此外,处理登录的家庭控制器看起来也不是很干净

更好的路线如下所示,但需要不同的控制器设置:

resources :sessions
这将创建以下路线和许多其他路线(不完全是这样,但让我们忽略细节):


同样,我建议您继续阅读。

在我看来,您最初编写的代码可能不正确,即使您已经修复了源代码,Rails仍然使用旧的(不正确的)版本

您一定有以下的一些变体:

redirect_to 'home', :action => 'login'
redirect_to 'home', 'login'
以前


让代码保持原样(
重定向到(:controller=>'home',:action=>'login')
),并确保正确地重新启动Rails进程。

为了解释重定向实际上需要的是一个路径而不是控制器或操作,Helsing非常漂亮地回答了这个问题,即如何从控制器及其操作中进行路由。

您的代码看起来正确,方法参数应该作为单个参数传入。用括号括住参数时会发生什么:
重定向到(:controller=>'home',:action=>'login')
?通过创建路由解决了问题。另外,我是ruby新手,在继续下一步之前,我肯定会先了解rails路由。谢谢你的推荐兄弟。
resources :sessions
get 'login' => 'sessions#new'
redirect_to 'home', :action => 'login'
redirect_to 'home', 'login'