Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-如何向json添加自定义属性?_Ruby On Rails_Json_Ruby_Api_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails-如何向json添加自定义属性?

Ruby on rails Rails-如何向json添加自定义属性?,ruby-on-rails,json,ruby,api,ruby-on-rails-5,Ruby On Rails,Json,Ruby,Api,Ruby On Rails 5,我的项目中有文件类(名为Arquivo,葡萄牙语),文件有名称属性,它是一个大名,带有一些标记、标识符和结尾的“实名”。因此我需要在我的json@files中创建一个新的自定义参数,以便只发送“实名” 名称示例: code-ALM-TAG-TT-TAG-1122-COD12-realNameFile.txt 我已经尝试了这个方法,但在这里他包含了相同的param消息:“它在数组的所有元素中都有效”,我需要为每个元素使用不同的param 我已经做了一些有效的事情,但很难看,我认为有一个更简单的方法

我的项目中有文件类(名为Arquivo,葡萄牙语),文件有名称属性,它是一个大名,带有一些标记、标识符和结尾的“实名”。因此我需要在我的json@files中创建一个新的自定义参数,以便只发送“实名”

名称示例:

code-ALM-TAG-TT-TAG-1122-COD12-realNameFile.txt

我已经尝试了这个方法,但在这里他包含了相同的param
消息:“它在数组的所有元素中都有效”
,我需要为每个元素使用不同的param

我已经做了一些有效的事情,但很难看,我认为有一个更简单的方法:

def all_files
  files = Arquivo.all.as_json(include: [:tag])
  files = add_cut_name(files)
  render json: { files: files }
end

def add_cut_name(files)
  files.each do |file|
    file["cut_name"] = file["nome"].split('-')[7]
  end
  files
end
我是这样想的:

def all_files
  files = Arquivo.all.as_json(include: [:tag], cut_name: ["nome"].split('-')[7])
  render json: { files: files }
end
但这不起作用

您可以使用:

您可以使用:


如果
nome
总是在末尾,那么我建议
split('-')。最后一个
而不是
split('-')[7]
。这样,如果
split
会产生超过八个元素(这些事情会发生-格式改变,有人会在文件名中添加一个新元素,等等),您仍然会得到预期的结果。如果
nome
总是在末尾,那么我建议
split('-')。最后一个
而不是
split('-')[7]
。这样,如果
split
产生超过八个元素(这些事情会发生-格式改变,有人会在文件名中添加一个新元素,等等),您仍然会得到预期的结果。
 files = Arquivo.all.as_json(include: [:tag]).map { |file| file.merge(cut_name: file['nome'].split('-')[7])}