群组的当前路线是:
resources :groups do
resources :links # Enables group/:id/link/new
collection do
post 'order_links'
end
# I tried adding:
# collection do
# post 'show'
# end
end
如何添加' POST" show的路由,以便可以使用json show请求?
我只试过get 'show'
,即
resources :groups do
resources :links # Enables group/:id/link/new
collection do
post 'order_links'
end
get 'show'
end
但我得到
Error loading: <!DOCTYPE html>
...
<h1>Routing Error</h1>
<p><pre>No route matches [POST] "/groups/42"</pre></p>
<p>
答案 0 :(得分:1)
<强>机智强>
迈克尔,也许您更适合使用Rails resourceful routing structure中定义的标准CRUD操作:
如上所示,按惯例,您有GET
显示操作,这意味着您可以将此路由与相应的respond_to
块一起使用,以定义JSON的响应:
#app/controllers/groups_controller.rb
Class GroupsController < ApplicationController
def show
@group = Group.find params[:id]
respond_to do |format|
format.html
format.json { render json: @group.to_json }
end
end
end
@group
变量发布到你的JSON请求-
Mime类型
我认为您对mime types
与Rails
您的controller#actions
不仅限于mime types
。 mime类型只是确定正在发送的请求的类型的一种方式,而不是将要处理它的操作
因此,您可能更适合将请求发送到系统中已有的控制器(凭借resources
指令),然后根据mime类型确定响应(在您的情况下) JSON)。
您可以通过以下方式处理请求来执行此操作:
#app/assets/javascripts/application.js
$.ajax({
url: "groups/" + $(this).attr("href"),
success: function(data) {
alert(data);
}
});
答案 1 :(得分:0)
你可以这样做
resources :groups do
resources :links # Enables group/:id/link/new
collection do
post 'order_links'
post 'show'
end
end
答案 2 :(得分:0)
我想进行ajax调用,示例似乎想要一个post路由(请参阅错误)。如果我只是请求数据,是否可以使用get?
如果您只是从数据库中获取数据,则可以get
使用,实际上这是get
请求通常设计的目的。