2016-08-31 4 views
0

form_tag使用している場合、オブジェクトが欠落している必要:コントローラでは、私はこのようなフォームデータを送信するためのフォームを持っている

= form_tag(admin_pturnovers_path(Pturnover.new), method: :post) do 
    = hidden_field_tag :project_id, projectuser.project_id 
    = hidden_field_tag :user_id, current_user.id 
    = submit_tag :submit, value: "Save" 

私はのparamsを確認してください。

params.require(:pturnover).permit(:project_id, :user_id) 

私はフォームを使用すると、私はこのエラーが出る:

ActionController::ParameterMissing - param is missing or the value is empty: pturnover 

そして実際それはPOSTパラメータから欠落しています。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "project_id"=>"1076", "user_id"=>"1", "commit"=>"Save"} 

私はこの期待:ここで間違っている何

Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "pturnover"=>{"project_id"=>"1076", "user_id"=>"1"}, "commit"=>"Save"} 

form_tagPturnover.newを使用すると、適切な必須パラメータが使用されると思いますか?

答えて

1

By using Pturnover.new in the form_tag

あなただけ_pathヘルパーadmin_pturnovers_pathで、form_tagPturnover.newを使用していません。

これを試してみてください。代わりにform_tag

= form_tag(admin_pturnovers_path, method: :post) do 
= hidden_field_tag 'pturnover[project_id]', projectuser.project_id 
= hidden_field_tag 'pturnover[user_id]', current_user.id 
3

使用form_forだけ

= form_for(Pturnover.new, url: admin_pturnovers_path, method: :post) do |f| 
    = f.hidden_field :project_id, value: projectuser.project_id 
    = f.hidden_field :user_id, value: current_user.id 
    = f.submit "Save" 

以下のように上記試してみて、あなたが

+0

編集のためのおかげで@Зелёный – Kushal

0

を予想通り、それはあなたのリクエストパラメータを与えます0123の代わりにsimple_form_forを使用することもできますまたはform_tagです。

あなたのフォームはすばやいフォームなので、simple_formの方法があります。

= simple_form_for(Pturnover.new, url: admin_pturnovers_path, method: :post) do |f| 
    = f.hidden_field :project_id, value: projectuser.project_id 
    = f.hidden_field :user_id, value: current_user.id 
    = f.submit "Save" 

注:simple_form推測をあなたはtext_fieldtext_areaをしたいとラベルを追加する場合、それはなるように。確かに、そのhidden_field以来、私はフォームが非表示になると思うが、あなたのフォームにinputを使用していてラベルを表示したくない場合は、label: falseを投げて "

f.hidden_field :project_id, label: false, value: projectuser.project_id 
関連する問題