Rails初学者 - 如何使这个API接受JSON?

时间:2016-03-03 03:33:38

标签: ruby-on-rails json api

我是rails的新手,我正在尝试将我的rails api连接到iOS应用程序的文章(包含两个字段 - 标题和描述)。我试图在POST请求中发送JSON数据,然后将该数据保存在数据库中。我想知道如何让我的articles_controller接受并保存json数据。

到目前为止,这是我的代码:

class ArticlesController < ApplicationController
before_action :set_article, only: [:edit, :update, :show, :destroy]

def index
  @all_articles = Article.all
end

def new
  @article = Article.new
end

def edit

end

def create
  @article = Article.new(article_params)
  if @article.save
    flash[:notice] = "Article was sucessfully created"
    redirect_to article_path(@article)
  else
    render 'new'
  end
end

def show

end

def update

  if @article.update(article_params)
    flash[:notice] = "Article was successfully updated."
    redirect_to article_path(@article)
  else
    render 'edit'
  end
end

def destroy

  @article.destroy
  flash[:notice] = "Article was successfully deleted."
  redirect_to(articles_path)
end

private
  def set_article
    @article = Article.find(params[:id])
  end
  def article_params
    params.require(:article).permit(:title, :description)
  end
 end

上述代码能够在网页上提交表单并将其保存到我的数据库中。我想改变它以接受来自iOS应用程序的json数据并保存到数据库。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

为POST方法制作路线:

config / routes.rb

match 'accept_post' => 'articles#accept_post', :via => :post

文章控制器

def accept_post
  // get parameters as usual (like params[:title] etc.)
  // do the saving to db
end

重要提示:公开访问网址。但是做你自己的身份验证,所以其他人不能POST它。

如果您愿意,可以在控制器中使用现有操作(例如创建),只是想让您了解它。

您可能需要解析控制器中的JSON

require 'json'

JSON.parse(<json object>)

JSON.parse(response.body)