2014-10-08 50 views
1

我是全新的rails,并且开始了guides.rubyonrails.org,现在我正面临着创建记录的问题。如何通过POST创建记录(使用POSTMAN)

我尝试发送此JSON: { “称号”: “someTitle”, “文”: “SomeText” 则会 }

http://www.justatest/articles.json

我的模型只有这个标题和文本字段作为属性定义。

也建立了路线。而我的控制器创建方法看起来像这样:

def create 
    @article = Article.new(article_params) 

    if @article.save 
     redirect_to @article 
    else 
     render 'new' 
    end 
    end 

    private 
    def article_params 
     params.require(:article).permit(:title, :text) 
    end 

做的请求时,我已经设置邮递员POST方法,但我收到此错误信息:在ArticlesController# 的ActionController :: ParameterMissing 创建 参数是丢失或值为空:文章

回答

2

相信JSON需要像:

{ article: { title: "someTitle", text: "someText" } } 

article_params试图找到一个名为0键的方法,你的json没有它。

+0

即使我得到:“参数丢失或值为空:文章” 如果我这样做:http:// localhost:3000/articles.json?article [title] = someTitle&article [text] = someText通过POST它虽然工作。但我希望我可以通过POST和JSON格式创建一个记录 – ThinkTeamwork 2014-10-08 18:59:00

+0

好吧我猜rails只是期望POST字段,它似乎期望url编码形式vals。你的回答让我进入了正确的方向,所以th MurifoX – ThinkTeamwork 2014-10-08 19:21:52

+1

啊好吧,没关系,现在我得到了它的工作。 content-type = application/json需要设置,它必须是真实的JSON格式,所以它看起来像这样: {“article”:{“title”:“someTitle”,“text”:“someText”}} – ThinkTeamwork 2014-10-08 19:43:01

2

为了达到此目的,您必须将ContentType标头设置为'application/json'以及用于创建记录的相关字段。

在收到此请求后,Rails将标头识别为JSON,然后将JSON解析为我们都知道并喜爱的'params'。

这是处理这个的link some of the source in Rails

+0

哦哇谢谢这个详细的链接到轨道的内部:)现在它对我来说晶莹剔透:) – ThinkTeamwork 2014-10-09 15:00:54