2014-10-08 48 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