Ruby on Rails - 从视图中调用控制器方法

11

抱歉,我有一个Rails新手问题。在我的Rails应用程序中,如何从视图中调用定义在我的控制器中的方法?例如,假设我编写了一个自定义方法来检索股票信息。在我的视图中,我想要一个普通的 HTML 按钮,点击该按钮后将调用我的自定义方法并填充股票结果。

这该怎么做?我查看了一些资料,但没有找到直接的方法。但我相信我可能漏掉了某些东西。


2
这并没有一个“直接”的方法来实现。当访问一个网页时,整个页面都会提前生成并发送给客户端。这发生在用户甚至看到任何按钮之前。如果您想在之后添加更多内容到页面上,您需要使用在客户端运行的Javascript执行一个AJAX请求来获取数据并将其添加到页面上。 - Tobias Cohen
2个回答

21

编辑:我根据问题的标题回答了问题,而这并不是问题的本意。你问题标题的答案在底部

你需要的是一个ajax请求,这是一个独立的控制器动作。你需要:

  1. JavaScript通过点击按钮请求路由并填充DOM对象

  2. 返回ajax请求所需内容的动作

有很多方法可以做到这一点,但如果你搜索“如何使用rails ajax”,你会发现无数的教程来帮助你入门。我喜欢的一种方式叫做pjax:https://github.com/rails/pjax_rails

旧答案...

声明一个helper_method,代码如下:

在你的控制器中:

private
def find_stock
  ...
end
helper_method :find_stock

在你的视角中:

<% find_stock.each do |stock| -%>

文档:http://api.rubyonrails.org/classes/AbstractController/Helpers/ClassMethods.html#method-i-helper_method


谢谢。我会去看一下Rails的AJAX教程。 - glchan79
“旧”解决方案正是我正在寻找的,有趣的是 ^^ - Eduardo López

1

您可以查看button_to视图助手的文档。

当然,这只是一种方式,您也可以使用远程选项通过 AJAX 请求来实现此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接