Ruby on Rails - 从视图调用控制器方法
Posted
技术标签:
【中文标题】Ruby on Rails - 从视图调用控制器方法【英文标题】:Ruby on Rails - Call controller method from a view 【发布时间】:2012-05-23 05:44:44 【问题描述】:抱歉,我有一个 Rails 新手问题。在我的 Rails 应用程序中,如何从视图中调用控制器中定义的方法?例如,假设我编写了一个检索股票信息的自定义方法。在我看来,我希望有一个常规的 html 按钮,单击该按钮将调用我的自定义方法并填充库存结果。
这是怎么做到的?我环顾四周,找不到直接的方法来做到这一点。但我确定我在这里遗漏了一些东西。
【问题讨论】:
没有真正的“直截了当”的方式来做到这一点。当一个网页被访问时,会预先生成整个页面并发送给客户端。这发生在用户甚至看到任何按钮之前,更不用说点击它们了。如果您以后想在页面中添加更多内容,则需要使用在客户端运行的 javascript 来执行 AJAX 请求以获取数据并将其添加到页面中。 【参考方案1】:编辑:我通过标题来回答问题,这不是问题所在。您问题标题的答案在底部
您想要的是一个 ajax 请求,它是一个单独的控制器操作。你需要:
单击按钮时请求路由并填充其 DOM 对象的javascript
返回 ajax 请求所要求的任何内容的操作
有很多方法可以做到这一点,但如果您搜索“howto 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教程。 我一直在寻找“旧”解决方案,有趣的是^^【参考方案2】:您可以查看button_to
查看帮助程序的文档
这是一种方式,当然,您可以使用远程选项通过 AJAX 请求执行此操作。
【讨论】:
以上是关于Ruby on Rails - 从视图调用控制器方法的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails:将数据调用到 javascript 中的首选方法?
在 ruby on rails 中将参数从视图传递到控制器
如何根据从下拉列表中选择的 CATEGORY 来控制 NEW/EDIT 视图中的列标题。带有 MYSQL 的 Ruby on Rails