- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读有关 respond_with 的内容。之前在几个教程中使用过它,但我并不认为我完全理解它。
我现在尝试实现的功能是:我有一个 Article 类的项目列表,每个项目都有一个指向创建收藏夹操作的链接。当用户单击它时,将创建最喜欢的实例并将用户重定向到主页。我希望它在不刷新页面的情况下与 AJAX 一起工作,并在文章项目上执行一些 JavaScript 以让用户知道它已被成功收藏。我在相关链接中使用了 :remote => true 属性,因此操作可以毫无问题地远程执行,但我对如何执行操作的 .js.erb 文件有点困惑。
我在 Controller 中完成了以下操作:
class FavouritesController < ApplicationController
before_filter :authenticate
respond_to :html, :js
def create
@article = Article.find_by_id(params[:article_id])
current_user.Favourites.create(:article => @article)
redirect_to root_path
end
问题是,我不知道应该将什么参数传递给 respond_with。我尝试用没有参数的 respond_with @article 和 respond_with 替换重定向,虽然它们都有效(调用了 create.js.erb),但我不明白为什么......
我不想“respond_with”任何东西,但只有当通过 javascript 执行操作时,create.js.erb 才会被调用。任何人都可以解释 a) 为什么无论我传递给它什么 respond_with 都会工作,以及 b) 什么是正确的方法来做到这一点?
顺便说一句,我正在使用 Rails 3.0
编辑:如果我在下面的代码中使用 respond_to,我会更好地理解它,但我想更好地理解 respond_with。
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
最佳答案
为了解决类似的问题,我多次遇到这个问题。事实证明,我的 Controller 并没有像我假设的那样从内容类型或它是一个 xhr 请求的事实中推断出格式。
无论如何,当我从这里切换时它起作用了:
contacts_path
对此:
contacts_path format: :json
我本身并不关心这个,所以我更改了我的 ajax 调用以包含像这样的 dataType 选项(根据 jQuery ajax documentation ):
$.ajax({url: contactUrl, type: 'POST', data: data, dataType: 'json' });
关于ruby-on-rails - 如何将 Rails respond_with 与创建操作和 javascript 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847682/
我是一名优秀的程序员,十分优秀!