簡體   English   中英

從控制器參數保存Rails模型?

[英]Save Rails model from controller params?

我嘗試過User.create(params),但這說“控制器”和“動作”不是可分配的。 我可以排除這些屬性,但是有更簡單的方法來編組我需要的屬性嗎?

一些例子似乎表明我可以使用params [:user],但如果我希望帖子只是用戶對象,則params [:user]看起來像是零。

所以我發布了{username:'blah',密碼:'blah'},用戶名和密碼都在params中,但不是params [:user]。

class UsersController < ApplicationController
  def create
    user = User.create(params[:user])
    if user.save
      render :json => user, :status => :created
    else
      logger.error user.errors
      render :json => {:status => :error, :errors => user.errors}, :status => :bad_request
    end
  end
end

在Rails項目中有一個約定,其中表單元素以某種方式命名(使用表單幫助程序自動為您執行此操作):

<input type='text' name='user[username]'>
<input type='text' name='user[username]'>

當它們發布到控制器時,這些轉換為params哈希:

params = {
  :user => {
    :username => 'whatever',
    :password => 'somepass'
  }
}

由於路由的工作方式,控制器,操作,id(如果適用)或任何自定義路由部分的鍵值對將添加到此params散列中。

params.merge!({
  :controller => 'users',
  :action     => 'create'
})

如果params[:user]對你來說是零,則可能需要更改表單以符合約定。

嘗試User.create(request.request_parameters)User.create(JSON.parse(request.body.read))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM