ruby-on-rails-3 – 为什么Rails 3.2.2在使用redirect_to时生成
好吧标题问题几乎总结了,但我想详细说明一个场景,
我创建了一个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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |