处理POST请求的正确方法是什么

时间:2014-07-31 10:41:43

标签: ruby-on-rails

我做了什么:

routes.rb中:

post 'api/last_sync_time' => 'api#set_last_sync_time'

控制器:

protect_from_forgery with: :null_session, if: Proc.new { |c| c.request.format == 'application/json' }

def set_last_sync_time
    last_sync_time = params["last_sync_time"]
    FileStorage.initFromFilename('sync').setLastSyncTime(last_sync_time)
end

试验:

curl -X POST -d "last_sync_time=1234567" http://localhost:3000/api/last_sync_time

所有工作文件,但在Rails控制台中,我收到消息:

  

ActionView :: MissingTemplate(缺少模板api / set_last_sync_time,   application / set_last_sync_time with {:locale => [:en],:formats => [:html,   :text,:js,:css,:ics,:csv,:vcf,:png,:jpeg,:gif,:bmp,:tiff,   :mpeg,:xml,:rss,:atom,:yaml,:multipart_form,:url_encoded_form,   :json,:pdf,:zip] ,: variants => [],:handlers => [:erb,:builder,:raw,   :ruby,:jbuilder,:coffee]}。

我该如何解决呢?可能有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您必须返回回复。由于您的请求格式为application/json,因此您可以根据请求返回类似下面的示例或更具信息性的消息。

render json: {success: true}