在我的routes.rb文件中我有一个资源:
resources :authentication
但我也想创建一个自定义路由,所以我在上一行中有以下内容:
scope :authentication do
get 'is_signed_in', to: 'authentication#is_signed_in?'
end
我跑了bin/rake routes
我的控制器有这个:
class AuthenticationController < ApplicationController
def is_signed_in?
if user_signed_in?
render :json => {"signed_in" => true, "user" => current_user}.to_json()
else
render :json => {"signed_in" => false}.to_json()
end
end
end
然而,当我尝试访问此路线时,我一直得到404.这就是我试图访问的方式:
$.ajax({
method: "GET",
url: "/authentication/is_signed_in.json"
})
我错过了什么吗?我必须做一些特别的事情来允许一个.json
扩展名的路线吗?
答案 0 :(得分:1)
您无需在此处使用scope
。只需添加以下 行resources :authentication
:
get 'authentication/is_signed_in', to: 'authentication#is_signed_in?'
或者,或许更规范(see the docs),您可以向给定资源添加更多操作,如下所示:
resources :authentication do
get 'is_signed_in', on: :collection
end
但是,在这种情况下,您可能需要将is_signed_in?
中的AuthenticationController
方法的名称更改为is_signed_in
(最后不包含?
)。< / p>