【问题标题】:Render json from multipart request?从多部分请求中渲染 json?
【发布时间】:2015-05-18 22:25:54
【问题描述】:

我想在多部分请求后从我的 API 返回一个 json 响应。

请求成功并按预期保存了所有内容,但之后我似乎无法呈现 json - 它只是呈现 html。

这是我的代码:

 def create
    @article = Article.new(article_params)

    respond_to do |format|
      if @article.save
        format.multipart_form { render :show, status: :created, location: @article }
        format.html { redirect_to @article, notice: 'Article was successfully created.' }
        format.json { render :show, status: :created, location: @article }
      else
        format.multipart_form { render json: @article.errors, status: :unprocessable_entity }
        format.html { render :new }
        format.json { render json: @article.errors, status: :unprocessable_entity }
      end
    end
  end

我从 iOS 应用程序发送请求,这里是请求标头:

{
    "Content-Length" = 563285;
    "Content-Type" = "multipart/form-data; boundary=2EA4A96C-18A6-4E1E-9140-DAC63D1066E7";
}

我是否需要在我的请求中指定其他内容,或者我在我的 rails create 方法中做错了什么?

【问题讨论】:

    标签: ruby-on-rails json multipartform-data multipart


    【解决方案1】:

    为什么你在成功保存时'render :show'?你不想吗

    这行看起来不对:

    format.multipart_form { render :show, status: :created, location: @article }
    

    这样会更合适吗?

    format.multipart_form { render :json => @article, status: :created }
    

    【讨论】:

    • 我希望渲染我的 show.json.jbuilder。这很有效,太棒了,但如果它可以呈现我的 jbuilder 内容,而不是 @article.to_json,那就太棒了
    • 我没有看到明确使用不同格式的 jBuilder 模板的方法。它必须存在。我个人更喜欢active-model-serializer。
    • 我会看看那个。 jBuilder 有很大的限制,虽然很容易使用。
    • 酷。我发现 AMS 非常简单,而且功能强大。如果你试一试,如果你有任何问题,请告诉我。
    【解决方案2】:

    不得不提的是,你要渲染的格式是json。那么你可以像往常一样使用jbuilder

    应该是这样的

    render :show, formats: :json, status: :created, location: @article
    

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2013-04-23
      • 2017-08-09
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多