gpt4 book ai didi

ruby-on-rails-3 - 为什么Rails 3.2.2在使用redirect_to时生成带有/assets前缀的URL?

转载 作者:行者123 更新时间:2023-12-03 00:08:33 33 4
gpt4 key购买 nike

标题问题几乎概括了这一点,但无论如何我想详细说明一个场景,

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

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

通过演示 Controller ,我执行以下操作:

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 是由于重定向而生成的:

/assets?action=show&controller=demo

我在这里遗漏了一些东西吗?我认为 Rails 应该为这种情况呈现操作的模板。

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

非常感谢!

最佳答案

为了获得所需的行为,请使用 render 而不是 redirect_to:

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

def show
end
end

编辑:

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

示例:

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

开发日志

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)

关于ruby-on-rails-3 - 为什么Rails 3.2.2在使用redirect_to时生成带有/assets前缀的URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001466/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com