我一直在阅读有关respond_with的内容。并且在之前的几个教程中使用过它,但我并不认为我完全理解它。
我现在尝试实现的功能是:我有一个类文章项目列表,每个项目都有一个指向创建收藏夹操作的链接。当用户点击它时,它会创建最喜欢的实例,并将用户重定向到主页。我希望这可以在没有页面刷新的情况下使用AJAX,并在文章项目上执行一些JavaScript,让用户知道它已成功受到青睐。我用过:remote =>相关链接中的true属性,因此操作远程执行没有问题,但我对如何执行动作的.js.erb文件有点困惑。
我在控制器中完成了以下操作:
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),但我不明白为什么......
我不想'response_with'任何东西,但只有当通过javascript执行动作时,才会调用create.js.erb。任何人都可以解释a)无论如何,无论我传递给它还是为什么做出反应,以及b)这样做的正确方法是什么?
BTW,我正在使用Rails 3.0
编辑:如果我在下面的代码中使用respond_to,我会更好理解,但我想更好地理解respond_with。
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
答案 0 :(得分:0)
我试图解决类似问题多次遇到这个问题。事实证明,我的控制器并没有像我认为的那样从内容类型或者它是xhr请求的事实推断格式。
无论如何,当我从这里切换时它起作用了:
contacts_path
对此:
contacts_path format: :json
我本身并不关心,所以我改变了我的ajax调用以包含像这样的dataType选项(per jQuery ajax documentation):
$.ajax({url: contactUrl, type: 'POST', data: data, dataType: 'json' });
答案 1 :(得分:-1)
您好Oalo通过下面的链接,它简明扼要地解释了respond_with和respond_to。它列出了您可以传递给respond_with
的所有选项希望这能回答您的问题