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 请求而不重定向的主要内容,如果未能解决你的问题,请参考以下文章