加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 为什么Rails 3.2.2在使用redirect_to时生成

发布时间:2020-12-17 02:01:30 所属栏目:百科 来源:网络整理
导读:好吧标题问题几乎总结了,但我想详细说明一个场景, 我创建了一个DemoController,(我还没有创建一个Resource模型),我的routes.rb看起来像这样: DispatchMe::Application.routes.draw do root to: "demo#index"end 从演示控制器我得到以下内容: class DemoCon
好吧标题问题几乎总结了,但我想详细说明一个场景,

我创建了一个DemoController,(我还没有创建一个Resource模型),我的routes.rb看起来像这样:

DispatchMe::Application.routes.draw do
  root to: "demo#index"
end

从演示控制器我得到以下内容:

class DemoController < ApplicationController
  def index
    redirect_to :action => 'show'
  end

  def show
  end
end

当然,app / views / demo / show.html.erb中有一个文件,我希望该模板可以呈现,但我得到以下错误:

ActionController :: RoutingError(没有路由匹配[GET]“/ assets”)

并且此URL是根据重定向生成的:

?/资产=动作表演和放大器;控制器=演示

我在这里错过了什么吗?我认为rails应该为这种情况呈现动作的模板.

注意.我明白如果我创建一个像’get’=>这样的路线“demo#show”并调用redirect_to show_path它会工作得很好,但我需要知道这是否是强制性的?

非常感谢你!

解决方法

对于所需的行为,请使用render而不是redirect_to:

class PagesController < ApplicationController
  def index
    render :action => "show"
  end

  def show
  end
end

编辑:

您可以在其他操作上使用redirect_to,但据我所知,索引操作会设置基本路径.要简化路由定义,请使用资源:controller_name.您可以通过在命令行中键入rake routes来查看资源生成的路由.

例:

demo_controller.rb

class DemoController < ApplicationController
  def index
  end

  def show
    redirect_to :action => 'index'
  end
end

的routes.rb

DispatchMe::Application.routes.draw do
  root to: "demo#index"
  resources :demo
end

development.log

Started GET "/demo/show" for 127.0.0.1 at 2012-04-04 14:55:25 -0400
Processing by DemoController#show as HTML
  Parameters: {"id"=>"show"}
Redirected to http://dispatch.dev/
Completed 302 Found in 0ms (ActiveRecord: 0.0ms)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读