如何在Ruby on Rails中添加自定义路由,控制器和操作?

时间:2015-11-22 16:34:35

标签: ruby-on-rails ruby activeadmin

我有一个Ruby on Rails和ActiveAdmin应用程序。除了添加和注册几个模型之外,我基本上没有更改任何默认配置。

我希望使用类似GET /heartbeat的路由启用我的应用程序,并使用简单的字符串响应客户端/用户。我想知道如何才能执行以下步骤:

  1. 向我的routes.rb文件添加自定义路由。
  2. app/controllers路径下添加自定义控制器。
  3. 实施自定义操作并直接回复用户,无需任何查看。

2 个答案:

答案 0 :(得分:8)

routes.rb中:

get 'heartbeat' => "custom_controller#heartbeat"

custom_controller.rb:

class CustomController < ApplicationController
  def heartbeat
    render inline: "Some string to the client/user"
  end
end

答案 1 :(得分:3)

避免使用Rails渲染堆栈可以节省一些处理速度并加快速度。您可以通过一个返回响应代码的简单Rack“应用程序”在路由器级别执行此操作:

get 'heartbeat', to: proc { [204, {}, []] }

响应call并返回[status, headers, body]的任何内容都符合机架标准,因此您可以在路由器中利用proc来做到这一点。在这种情况下,我们发送的204 No Content应该足以用于心跳,但您始终可以返回自定义数据/标头。

<强>更新

我只能想象这被低估了,因为人们不明白为什么这样更好。这是一个快速尝试解释:

如果不清楚,使用此方法根本不需要控制器操作。这是接受答案的等效解决方案:

get 'heartbeat', to: proc { [200, {}, ['Some string to the client/user']] }

在Rails routes.rb文件中粘贴该行将等同于创建一个新的控制器,视图和路由条目,只有一个关键区别:它避免了Rails响应呈现堆栈所以应该比公认的解决方案快得多。

相关问题