在rails app中仅使用一个控制器

时间:2013-04-12 19:10:19

标签: ruby-on-rails ruby

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

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

有没有办法解析一个url作为example.com/params,总是由同一个动作和控制器处理?

3 个答案:

答案 0 :(得分:0)

是的,有。在config/routes.rb文件中定义路由:

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

然后在你的控制器中:

class CatchallController < ApplicationController

  def respond

  end 
end

答案 1 :(得分:0)

routing的Rails指南中有几个例子。文件config/routes.rb是您设置从URL到控制器的映射的地方。

一个具体的例子就是:

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

任何不匹配的请求都会被路由到UsersController的{​​{1}}方法,并在show哈希中传递字符串作为{{{ 1}}密钥。

答案 2 :(得分:0)

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

def index
  if self.class.instance_methods(false).include? params[:page].to_sym
    render action: params[:page]
  else
    #error_404
  end
end