Ruby on Rails路由到控制器

时间:2016-03-15 01:30:37

标签: ruby-on-rails ruby controller routes views

据我了解,路线会将您从起点带到控制器和行动。该行动提出了相关的观点;那么如果我不需要控制器的任何视图,只想调用控制器的底层方法,而不渲染视图或路径,那该怎么办呢。

假设我有一个FoodsController有几种方法,并且在该控制器中存在蛋糕,披萨和芯片的方法。每个人都在数据库中查询秘密消息并将其存储在变量中,但对此的请求将来自我们应用程序的其他部分。

为了实现这一点,我应该使用这种或某种点语法的路由,例如food.cake()

所以我想我想说的是,嘿,“服务器”去做这件事,回到你离开的地方。

3 个答案:

答案 0 :(得分:0)

你可以使用渲染json或文本,如果方法没有呈现任何东西,我认为它应该是私有的。

答案 1 :(得分:0)

在你的例子中,你可以在另一个控制器中使用cake方法,如下所示:

cake = Food.cake

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

答案 2 :(得分:0)

Controller仅适用于URL端点。例如,如果您点击http://my.app/my_route,则需要将my_route部分映射到routes.rb文件中的控制器操作。但是如果你在浏览器中输入这个会怎么样?你想看到一些正确的东西吗?所以你需要返回一些数据(json,html,erc)。您可以使用render

这与编写“普通”Ruby代码(即Web框架之外的Ruby)不同。你了解课程是什么以及以下是如何工作的吗?

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表示“无内容”。