0

我正在尝试开发一个只需要一个控制器的应用程序,并使用 url 中的任何内容作为该控制器的参数。

我读过通常将 url 解析为 GET 控制器/动作,如 example.com/controller/action/params,但我想使用特定的控制器和特定的动作。

有什么方法可以将 URL 解析为 example.com/params,始终由相同的操作和控制器处理?

4

3 回答 3

0

我认为这是个坏主意,但是您可以使用渲染操作来做到这一点:

def index
  if self.class.instance_methods(false).include? params[:page].to_sym
    render action: params[:page]
  else
    #error_404
  end
end
于 2013-04-12T19:34:03.933 回答
0

就在这里。在您的config/routes.rb文件中定义路线:

match "catchall/*page", :to => "catchall#respond"

然后在你的控制器中:

class CatchallController < ApplicationController

  def respond

  end 
end
于 2013-04-12T19:18:41.800 回答
0

Rails路由指南中有几个这样的例子。该文件config/routes.rb是您设置从 URL 到控制器的映射的位置。

一个具体的例子是这样的:

match '/:username' => 'users#show'

任何不匹配的请求都将被路由到UsersController'show方法,并在params哈希中传递字符串作为username键的值。

于 2013-04-12T19:19:07.527 回答