据我了解,路线会将您从起点带到控制器和行动。该行动提出了相关的观点;那么如果我不需要控制器的任何视图,只想调用控制器的底层方法,而不渲染视图或路径,那该怎么办呢。
假设我有一个FoodsController
有几种方法,并且在该控制器中存在蛋糕,披萨和芯片的方法。每个人都在数据库中查询秘密消息并将其存储在变量中,但对此的请求将来自我们应用程序的其他部分。
为了实现这一点,我应该使用这种或某种点语法的路由,例如food.cake()
。
所以我想我想说的是,嘿,“服务器”去做这件事,回到你离开的地方。
答案 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表示“无内容”。