我正在尝试开发一个我只需要一个控制器的应用程序,并使用url中的任何内容作为该控制器的参数。
我已经读过,通常将url解析为GET控制器/操作,如example.com/controller/action/params,但我想使用特定的控制器和特定的操作。
有没有办法解析一个url作为example.com/params,总是由同一个动作和控制器处理?
答案 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