0

我正在開發一個Rails 4 API,客戶可以將數據發佈到控制器,並保存在數據庫中。我想知道如何將用戶實現爲POST嵌套JSON,然後讓控制器接受這些屬性並使用它們創建一個模型。該JSON看起來像Rails JSON嵌套屬性

{ 
    'identifier': { 
    'name': 'Test' 
    } 
} 

然後在一個私人的方法,我有

def parameters 
    params.respond_to?(:permit) ? 
     params.require(:picture).permit(:identifier) : 
     params[:picture].slice(:identifier) rescue nil 
    end 

,當我嘗試訪問「名稱」參數在我的控制器parameters[:identifier][:name]我得到了一個未定義的方法[]。有什麼建議麼?

創建操作

@picture = current_user.pictures.new(name: parameters[:identifier][:name]) 

圖片模型只有t.string :name

+1

後爲創建控制器和動作的代碼還有什麼領域,你有數據庫,即你的模型 – CuriousMind

+0

@ GaurishSharma完成 – ny95

回答

1

您可以在允許的參數,只要你創建它們使用嵌套的JSON如:

def parameters 
    params.respond_to?(:permit) ? 
     params.require(:picture).permit(:identifier => [ :name ]) : 
     params[:picture].slice(:identifier => [ :name ]) rescue nil 
    end 

這工作on Rails的4使用強參數

1

貌似有JSON字符串'identifier'作爲重點,而你試圖用符號:identifier,返回nil訪問它。因此[]未在nil上定義。你應該可以做parameters["identifier"]["name"]