【问题标题】:cURL post to server resulting in a UnknownFormat errorcURL 发布到服务器导致 UnknownFormat 错误
【发布时间】:2013-09-09 02:09:37
【问题描述】:

我是 Rails 的新手,很难将 cURL 发布到我的服务器。任何帮助将不胜感激。

我将 JSON 数据发布到我的服务器。 这是我的 curl 帖子curl -X POST -H "Content-Type: application/json" -d '[{"photo":[{ "location": "location", "userID": "userid" },{ "location": "location", "userID": "userid" },{"location": "location", "userID": "userid"}]}]' http://localhost:3000/photo/create

这是我的控制器:

class SendphotoController < ApplicationController

    def create
    @photo = Photo.new(:photo => params[:location], :photo => params[:userID])
    respond_to do |format|
        if @photo.save
            puts "Done"
        else
            puts "NOPE"
        end 
    end     
end

我收到ActionController::UnknownFormat (ActionController::UnknownFormat):的错误

这是完整的日志:

Started POST "/photo/create" for 127.0.0.1 at 2013-09-08 22:03:56 -0400
Processing by SendphotoController#create as */*
  Parameters: {"_json"=>[{"photo"=>[{"location"=>"location", "userID"=>"userid"}, {"location"=>"location", "userID"=>"userid"}, {"location"=>"location", "userID"=>"userid"}]}], "sendphoto"=>{"_json"=>[{"photo"=>[{"location"=>"location", "userID"=>"userid"}, {"location"=>"location", "userID"=>"userid"}, {"location"=>"location", "userID"=>"userid"}]}]}}
WARNING: Can't mass-assign protected attributes for Photo: photo
    app/controllers/sendphoto_controller.rb:4:in `create'
   (0.0ms)  begin transaction
  SQL (0.3ms)  INSERT INTO "photos" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", Mon, 09 Sep 2013 02:03:56 UTC +00:00], ["updated_at", Mon, 09 Sep 2013 02:03:56 UTC +00:00]]
   (215.8ms)  commit transaction
Done
Completed 406 Not Acceptable in 235ms

ActionController::UnknownFormat (ActionController::UnknownFormat):
  app/controllers/sendphoto_controller.rb:5:in `create'

【问题讨论】:

    标签: json curl ruby-on-rails-4


    【解决方案1】:

    您使用的是respond_to 块,但不是任何格式。您的块应如下所示:

    respond_to do |format|
      format.html {
        # respond to a web form with HTML
      }
    
      format.json {
        # respond to API request
      }
    end
    

    如果您只想要所有格式的通用响应,您可以完全删除 respond_to 位。 但是 puts 不能在 Controller 上下文中工作(或者几乎在 Rails 中的任何地方);你必须render 一些东西。

    可能看起来像这样

    def create
      if Photo.create # ...
        render text: "done"
      else
        render text: "nope"
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多