Ruby Rails 路由到控制器

Ruby on Rails routes to controllers

据我了解,路线会将您从起点带到控制器,然后是动作。该操作会带来相关的视图;那么如果我的控制器不需要任何视图,而只想调用控制器的底层方法,而不渲染视图或路由怎么办。

假设我有一个包含多个方法的 FoodsController,并且在该控制器中存在方法 cake、pizza 和 chips。每个人都在数据库中查询一条秘密消息并将其存储在一个变量中,但是对此的请求将来自我们应用程序的其他部分。

为了完成这个,我应该为此使用路由还是使用某种点语法,例如 food.cake()

所以我想我想说的是,嘿 "Server" 去做这件事,完成后回到你离开的地方。

你可以使用render json 或者text,如果这个方法不渲染任何东西,我认为它应该是私有的。

在您的示例中,您可以像这样在另一个控制器中使用 cake 方法:

cake = Food.cake

请注意,此方法应存在于食物模型中而不是控制器中,因为您不需要视图。

控制器仅适用于 URL 个端点。例如,如果您点击 http://my.app/my_route,您需要将 my_route 部分映射到 routes.rb 文件中的控制器操作。但是如果你在你的浏览器中输入这个会发生什么?你会想看点什么吧?所以你需要return一些数据(json,html,erc)。您可以为此使用 render

这不同于编写 'normal' Ruby 代码,即 Ruby 在网络框架之外。您了解什么是 class 以及以下内容的工作原理吗?

class MyClass
  def initialize
  end
  def my_method
    puts "my_method_called"
  end
end

MyClass.new.my_method # => "my_method_called"

这是非常基本的 Ruby 并且在 Rails 中也适用,尽管对于需要编写代码的位置有一些规则。

顺便说一下,如果你真的想做一个什么都不渲染的控制器动作,只需使用:

render text: "", status: 204
return false

状态:204表示"No Content"。