これがsimple_fields_forの問題か繭の問題なのかどうかはわかりませんでした。 </div>
プレースメントで慌ててしまった場合は表示されません。検証が失敗したときに1つのフォーム要素がレンダリングされない
フォームが最初に表示されると、プロトコル名の入力フィールドがレンダリングされます。ユーザはボタンをクリックして、関心のあるフォーム要素を追加することができる。これは正常に動作し、次のようになります。
ユーザーが追加することができます。
はここで、ユーザが「要素を追加」ボタンのそれぞれをクリックした後、それがどのように見えるかです0.各要素のいくつか。彼らが「保存」をクリックすると、すべてがうまく機能します。
いずれかのフィールドに検証エラーがある場合、フォームは1つの例外を除いて正常に再描画されます。 「イメージングステップ」要素の検証エラーはまったく表示されません。他の要素は再レンダリングされ、検証が失敗した場合には期待どおりに強調表示されます。
ここに図があります。フォームの再、「保存」をクリックし、検証を失敗した後
:ユーザーは、「シーケンス」を選択するのを忘れたと「ヒントの説明」のテキストを入力するのを忘れた、フォームの一部を記入しますこのような-renders:あなたが見ることができるように
、イメージングステップセクションが再描画されていません。
ビューのコンテキストでparamsを見ると、すべてがそこにあるようです。 @ protocol.errorsは私にも同様に見えます。モデルもOKです。
ここにはpastebin of the form codeがあります。
ここにはpastebin of _step_item_fields.html.erbがあります。
ここにはpastebin of _tip_fields.html.erbがあります。
ここにはpastebin of my Gemfileがあります。
UPDATE:
私はこのようなstep_item構築する場合:
<div id="step_items">
<%= f.simple_fields_for :step_items, @protocol.step_items.build do |si| %>
<%= render 'step_item_fields', :f => si %>
<%end%>
</div>
を結像ステップの部分は常に描かれているが、(明らかに)検証が失敗したときに移入されません。これはまた、ユーザーに0.Many Imaging Stepsを追加/削除させるという機能を混乱させる。
<div id="step_items">
<%= f.simple_fields_for :step_items, @protocol.step_items.build(protocol_params) do |si| %>
<%= render 'step_item_fields', :f => si %>
<%end%>
</div>
を...とprotocol_paramsが利用可能な他の変形が、禁断のparamsの問題に走った:
私も試してみました。
アップデート2:
私もstep_itemのためのparamsとハッシュを構築しようとしました。私はここでこれを使うことができます:
<div id="step_items">
<%= f.simple_fields_for :step_items, @protocol.step_items.build(some_ok_params) do |si| %>
<%= render 'step_item_fields', :f => si %>
<%end%>
</div>
...ただし、1つのstep_itemだけです。 0..manyの機能を反映したハッシュのハッシュを渡す方法がわかりません。また、このようにstep_itemを作成すると、フォーム要素が正しく入力されますが、エラーのハイライトスタイルは含まれません。これは、私がなぜ簡単な解決法が機能していないのか不思議に思っていた頃です。