我有一个特殊的Rails控制器方法,当我在前端执行javascript ajax请求时返回一些JSON。
但是,我想阻止用户直接输入url,这会显示该方法返回的JSON。我还想要仍然能够执行我的ajax请求。我怎么能这么做呢?谢谢!
答案 0 :(得分:3)
只是想一想......你可以在respond_to
块中为html请求做一些自定义的事情。
respond_to do |format|
format.html { ... } # give them a 404 response?
format.js { render :json => @obj }
end
或者你的html.erb模板可能只显示某种拒绝访问的消息。那你就是这个:
respond_to do |format|
format.html
format.js { render :json => @obj }
end
答案 1 :(得分:2)
你可以用
包裹你的行动 if request.xhr?
...
end
答案 2 :(得分:2)
rails3控制器中的respond_to过滤器非常可爱。
YourJsonController < ApplicationController
respond_to :json
def index
#non-json requests will receive a 406 error
end
end
答案 3 :(得分:0)
在routes.rb
中,您可以添加:via =&gt; :post,所以你的URL只接受POST请求。请参阅http://guides.rubyonrails.org/routing.html