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/algorithm/10.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 ReactJS+;Rails:HABTM不在属性中,因此无法保存_Ruby On Rails_Ruby On Rails 4_React Rails - Fatal编程技术网

Ruby on rails ReactJS+;Rails:HABTM不在属性中,因此无法保存

Ruby on rails ReactJS+;Rails:HABTM不在属性中,因此无法保存,ruby-on-rails,ruby-on-rails-4,react-rails,Ruby On Rails,Ruby On Rails 4,React Rails,我是构建ReactJS(react on rails)+rails应用程序的一部分。我自己还不是ReactJS开发人员,但在选择ReactJS之后,我被带进了这个项目 我的问题涉及通过创建和编辑post请求从React发送到Rails的参数。 我的案例模型: class Hrfile < ActiveRecord::Base mount_uploader :attachment, AttachmentUploader has_and_belongs_to_many :sras

我是构建ReactJS(react on rails)+rails应用程序的一部分。我自己还不是ReactJS开发人员,但在选择ReactJS之后,我被带进了这个项目

我的问题涉及通过创建和编辑post请求从React发送到Rails的参数。 我的案例模型:

class Hrfile < ActiveRecord::Base
  mount_uploader :attachment, AttachmentUploader
  has_and_belongs_to_many :sras
  ...
end

class Sra < ActiveRecord::Base
  ...
  has_and_belongs_to_many :hrfiles
  ...

  validates :name, presence: {message: "Please input a name"}
end
我搞不清楚的问题/错误是,当我通过ReactJS应用程序创建一个新的Sra时,包括一个名称和X个hrfile,然后发布JSON(如上所述)。这是Rails收到的:

Started POST "/sras" for 127.0.0.1 at 2016-04-05 16:29:07 +0800
Processing by SrasController#create as JSON
  Parameters: {"name"=>"Test assessment", "organisation_id"=>nil, "brand_id"=>nil, "user_id"=>nil, "asset_id"=>nil, 
"startdate"=>nil, "reviewdate"=>nil, "address"=>nil, "city"=>nil, "region_id"=>nil, "country_id"=>nil, "assetother"=>nil, "enddate"=>nil, "active"=>nil, "treatment"=>nil, 
"indicator_deteroriation"=>nil, "conclusion"=>"Test conclusion", "ireport_ids"=>nil, "hrfile_ids"=>["2","1"],  
"sra"=>{"name"=>"Test assessment", "organisation_id"=>nil, "country_id"=>nil, "user_id"=>nil, 
"startdate"=>nil, "enddate"=>nil, "reviewdate"=>nil, "active"=>nil, "city"=>nil, "address"=>nil, "asset_id"=>nil, "assetother"=>nil, 
"indicator_deteroriation"=>nil, "conclusion"=>"Test conclusion", "brand_id"=>nil, "region_id"=>nil}}
ReactJS应用程序确实转发了例如“hrfile_id”=>[“2”,“1”],但是ParamsRapper(我怀疑)没有将“hrfile_id”识别为属性,因此仅保存名称

有人知道我在这里遗漏了什么吗

如果您需要任何其他代码块或详细信息,请告诉我。希望你能帮忙:)提前谢谢-

编辑


感谢Jesper指出“sra”对象是由in Rails创建的。尽管我的模型Sra和Hrfile之间存在关系,我可以调用@Sra.hrfiles来获取所属的Hrfile,但我仍然无法确定如何将Hrfile_ids参数包装到JSON中。

这是由ActionController自动完成的。请参阅此处的更多信息:

hrfile\u ID
可能不包括在内,因为Rails期望的是ID列表而不是ID:X的对象列表


您可以使用如下强参数:
params.require(:sra).permit(:name,hrfile\u id:[])

谢谢@thejspr!现在我将通过调用:
params.require(:sra).merge(SrasController中的hrfile\u-id:params[“hrfile\u-id”])
sras\u-params:)
Started POST "/sras" for 127.0.0.1 at 2016-04-05 16:29:07 +0800
Processing by SrasController#create as JSON
  Parameters: {"name"=>"Test assessment", "organisation_id"=>nil, "brand_id"=>nil, "user_id"=>nil, "asset_id"=>nil, 
"startdate"=>nil, "reviewdate"=>nil, "address"=>nil, "city"=>nil, "region_id"=>nil, "country_id"=>nil, "assetother"=>nil, "enddate"=>nil, "active"=>nil, "treatment"=>nil, 
"indicator_deteroriation"=>nil, "conclusion"=>"Test conclusion", "ireport_ids"=>nil, "hrfile_ids"=>["2","1"],  
"sra"=>{"name"=>"Test assessment", "organisation_id"=>nil, "country_id"=>nil, "user_id"=>nil, 
"startdate"=>nil, "enddate"=>nil, "reviewdate"=>nil, "active"=>nil, "city"=>nil, "address"=>nil, "asset_id"=>nil, "assetother"=>nil, 
"indicator_deteroriation"=>nil, "conclusion"=>"Test conclusion", "brand_id"=>nil, "region_id"=>nil}}