2016-08-03 6 views
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を持っていたことを忘れていました...すべての検証チェックがあると思いました。明らかに、拒否されたときには出力を出さないので、拒否されたとしてログにポップアップしていないし、データを処理していないだけだった。今

答えて

0

期待通りにすべてはこれが

@column_value = params[:column_value] 
@table = Table.New 
@table.column1 = @column_value 
@table.column2 = @column_value 
@table.column3 = @column_value 

役立つかもしれない働いているか、また

def column_value=(value) 
    self.column1 = value 
    self.column2 = value 
    self.column3 = value 
end 

はあなたが使用する必要が覚えている、あなたはセッターを使用することができます。COLUMN_VALUE形でも属性

として

まだ動作していない場合は、許可を確認してください:column_value parameter

def params_table 
params.require(:table).permit(:column_value) 
end 
+0

あなたが許可するのを忘れていましたIVEは私がそれを掲示コードを見れば、あなたが(ちょうどフィールドの私の名前で)得たものと同じであることを試みたが、それはフィールドに – DRing

+0

を更新doesntの:humanized_ingredientを? setterを使用するには、最初にパラメータを許可する必要があります。 –

+0

がネストされた属性として呼び出され、親コントローラのparamsリストに含まれます。それは受け入れられており、サーバコンソールはそれを拒否していると言っていません。(前に起こったことです) – DRing

関連する問題