私は ReactJS (react-on-rails) + Rails アプリケーションの構築に携わっています。私自身は (まだ) ReactJS 開発者ではありませんが、ReactJS が選ばれた後、プロジェクトに参加しました。
私の問題は、投稿リクエストの作成および編集を介して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 は Formsy-react をフォームとして使用します。ここでは、Formsy のマッピング要件を満たすために、react-select を複数選択フォームとして使用および変更しました。
次のデータは、React の .post('/sras').send(data) を介して ReactJS から送信されています。
{
active:null
address:null
asset_id:null
assetother:null
brand_id:null
city:null
conclusion:"Test conclusion"
country_id:null
enddate:null
hrfile_ids:["2","1"]
indicator_deteroriation:null
ireport_ids:null
name:"Test assessment"
organisation_id:null
region_id:null
reviewdate:null
startdate:null
treatment:null
user_id:null
}
私が理解できない問題/バグは、ReactJSアプリケーションを介して名前とX個のHrfilesを含む新しいSraを作成し、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_ids"=>["2", "1"] を転送しますが、ParamsWrapper (私が推測する) は 'hrfile_ids' を属性として認識しないため、名前のみが保存されます。
ここで何が欠けているのか誰にも分かりますか?
他のコードブロックや詳細が必要な場合はお知らせください。あなたが助けてくれることを願っています:)事前に感謝します-
編集
「sra」オブジェクトがRailsのparams ラッパーによって作成されたことを指摘してくれた Jesper に感謝します。Sra と Hrfile という 2 つのモデルの間には関係があり、@sra.hrfiles を呼び出して所属する Hrfile を取得できますが、JSON にラップされた hrfile_ids パラメータを取得する方法はまだわかりません。