Rails 3 - 链接/按钮运行 ajax 请求而不重定向

Posted

技术标签:

【中文标题】Rails 3 - 链接/按钮运行 ajax 请求而不重定向【英文标题】:Rails 3 - link/button to run ajax request without redirecting 【发布时间】:2011-11-25 15:21:09 【问题描述】:

链接运行 ajax 命令的最佳方式是什么(我在 Rails 3.1 中使用 jquery)?到目前为止,我正在尝试使用链接通过控制器操作“update_me”运行代码。

views/products/new.html.erb 有以下行:

<%= link_to "Update", :action => 'update_me' %>

在我的产品控制器中,我有:

def update_me
    logger.debug 'ajax code will be here'
end

但这会导致缺少模板错误:

模板丢失

缺少模板 products/update_me、application/update_me 与 :handlers=>[:erb, :builder, :coffee], :formats=>[:html], :locale=>[:en, :en] .在以下位置搜索:*“/home/ubuntu/code/preevio/app/views”*“/home/ubuntu/.rvm/gems/ruby-1.9.2-p290@rails31/gems/devise-1.4.3/app/意见”

为什么我的视图中需要有update_me.html.erb?我想这就是他们想要的。我不能只在控制器操作/方法中启动代码而不必查看它吗?还是我以错误的方式接近这个?

【问题讨论】:

update_me 操作是 POST 还是 GET 数据 【参考方案1】:

我知道这个答案有点晚了,但我将它发布给任何可能来到这里尝试做类似事情的人。

如果您将 html 行更改为

<%= link_to "Update", :action => 'update_me', :remote => true %>

这应该具有指向所提供操作的链接并为您执行 ajax 调用。

您可以查看提供的链接以查看文档。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

【讨论】:

附带说明,您还需要在控制器中渲染 :nothing => true。【参考方案2】:

由于 Rails 约定优于配置,Rails 期望控制器中的操作有适当的视图。

如果您不想渲染任何内容: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render

render :nothing => true

【讨论】:

这将我带到一个空白页面,即 products/update_me。如何防止任何类型的重定向? 你为什么不直接使用 jquery 来进行 ajax 调用呢?我认为 $.ajax(" 'update_me' %>")

以上是关于Rails 3 - 链接/按钮运行 ajax 请求而不重定向的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4 Ajax 之类的按钮无法正常工作

Rails 3 AJAX请求真实性令牌被忽略

Rails3 中的 Ajax 请求,无法正常工作

Rails 通过 ajax 闪烁通知

数据类型 JS 的 Rails 4 远程请求回调问题

使用 AJAX 请求下载文件数据 - ruby​​ on rails 3