gpt4 book ai didi

ruby-on-rails - 没有 View 的 Controller 中的操作(用于 AJAX)

转载 作者:行者123 更新时间:2023-12-04 10:39:34 27 4
gpt4 key购买 nike

我正在尝试在 Rails 中发出 ajax 请求。我想要做的是从我的 javascript 调用 Controller 中的操作,而不必为其创建 View 页面。例如

class BooksContoller < ApplicationController
respond_to :html, :json, :xml

def myaction
respond_to do |format|
format.js { # do stuff }
end
end

end

在 routes.rb 文件中我添加了以下内容

match '/books/myaction' => 'books#myaction'

这是我正在进行的 ajax 调用

$.ajax(
{
type: "GET", url: "/books/myaction.js",
success: function(data){
console.log(data);
}
});

Rails 提示找不到 View

ActionView::MissingTemplate with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee, :haml]}

显然,如果我创建相应的 myaction.html.haml 文件,它会很高兴并且一切正常。但是我不想为此操作创建 View ,因为它只会用于 ajax 请求。有没有办法在不为其创建 View 的情况下对自定义操作进行 ajax 调用?

最佳答案

你只需要把 render :json => {:example => :object} 放在最后。例如:

def myaction
respond_to do |format|
format.js do
# do stuff
render :json => {:result => :of_stuff}
end
end
end

当然,如果你知道你只会将它用于 AJAX 请求,那么你可以完全跳过 respond_to(这将允许你调用带或不带 .js 的 URI):

def myaction
render :json => {:result => :of_stuff}
end

关于ruby-on-rails - 没有 View 的 Controller 中的操作(用于 AJAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com