我是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数据并保存到数据库。
非常感谢您的帮助
答案 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)