redirect_to中错误的参数数量(2为0..1)

时间:2015-12-27 20:17:20

标签: ruby-on-rails ruby arguments

错误图像

android-implementing-progressbar-and-loading-for-endless-list-like-android

home_controller.rb

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                    PlaySentence();
                }
            });

的Gemfile

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

3 个答案:

答案 0 :(得分:2)

redirect_to :controller => 'home', :action => 'login'

这是不正确的,更不用说丑陋了。而是在routes.rb中创建一个执行该操作的路由。例如:

get 'login' => 'home#login'

然后你会使用:

redirect_to login_path

<强>奖金

****你应该阅读rails routing以获得更好的路线。****

此外,处理登录的家庭控制器似乎不太干净。

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

resources :sessions

创建以下路由和许多其他路径(不完全但忽略了详细信息):

get 'login' => 'sessions#new'

我再次建议你阅读Rails routing

答案 1 :(得分:0)

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

你必须有一些变体:

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

之前。

保留您的代码(redirect_to(:controller => 'home', :action => 'login')),并确保正确地重新启动Rails过程。

答案 2 :(得分:0)

只是为了解释redirect_to实际上期望路径不是控制器或动作而且Helsing非常精美地回答了它如何从控制器及其动作中做出路径。