0
1つのフォームフィールドからの入力を解析して、テーブルの3つの列を更新しようとしています。カスタム属性を作成し、フォームで使用するための独自のセッターメソッドとゲッターメソッドを定義しました。実際に列データを設定する方法が問題です。それは入力を取るように見えません。次のように1つのテキストフィールドから複数の列を更新する
私のセッターは、次のとおりです。
def humanized_ingredient=(value)
parsed = Ingreedy.parse(value)
write_attribute(:amount, parsed.amount)
write_attribute(:name, parsed.ingredient)
write_attribute(:unit, parsed.unit)
end
私はのparamsホワイトリストに新たなhumanized_ingredientを持っているが、量、名前やユニットに何かをするように見えるdoes notの。サーバーコンソールにエラーはありません。アイブ氏はまた、同様にこの
def humanized_ingredient=(value)
parsed = Ingreedy.parse(value)
self.name = parsed.ingredient
self.amount = parsed.amount
self.unit = parsed.unit
end
相続ビューを試してみました:それはのparams
編集取っイマイチ理由
<div class="row">
<div class="small-11 columns">
<%= f.text_field :humanized_ingredient %>
</div>
<div class="small-1 columns">
<%= f.hidden_field :_destroy %>
<%= link_to "Remove", '#', :onclick => h("remove_fields(this)"), class: "btn", title: "Remove Ingredient", remote: true %>
</div>
</div>
は見当がつかない:イム少し睡眠に馬鹿とはずのコードを.. .so私は親モデルのaccepts_nested_attributesにreject_ifを持っていたことを忘れていました...すべての検証チェックがあると思いました。明らかに、拒否されたときには出力を出さないので、拒否されたとしてログにポップアップしていないし、データを処理していないだけだった。今
あなたが許可するのを忘れていましたIVEは私がそれを掲示コードを見れば、あなたが(ちょうどフィールドの私の名前で)得たものと同じであることを試みたが、それはフィールドに – DRing
を更新doesntの:humanized_ingredientを? setterを使用するには、最初にパラメータを許可する必要があります。 –
がネストされた属性として呼び出され、親コントローラのparamsリストに含まれます。それは受け入れられており、サーバコンソールはそれを拒否していると言っていません。(前に起こったことです) – DRing