0

我正在开发 Rails 4 API,客户端可以将数据发布到控制器,并将其保存在数据库中。我想知道如何实现用户发布嵌套 JSON,然后让控制器接受属性并用它们创建模型。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

4

2 回答 2

1

看起来 JSON 将字符串'identifier'作为键,而您尝试使用:identifier返回的符号访问它nil。所以[]没有定义在nil. 你可能应该这样做parameters["identifier"]["name"]

于 2013-07-28T18:42:26.333 回答
1

您可以使用嵌套 JSON,只要您在允许的参数中创建它们,例如:

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

这适用于使用强参数的 Rails 4

于 2013-07-29T00:22:48.050 回答