2016-08-03 54 views
0

我試圖解析來自單個表單字段的輸入以更新表中的3列。我創建了一個自定義屬性並定義了我自己的setter和getter方法以在表單中使用。我遇到的問題是如何設置實際的列數據。它似乎沒有采取輸入。從一個文本字段更新多列

我二傳手如下:

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,但它似乎沒有做任何事情來的數量,名稱或單位。服務器控制檯中沒有任何錯誤。香港專業教育學院也嘗試過這種

def humanized_ingredient=(value) 
     parsed = Ingreedy.parse(value) 
     self.name = parsed.ingredient 
     self.amount = parsed.amount 
     self.unit = parsed.unit 
end 

繼承人的看法,以及:

<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> 

不知道爲什麼它不是採取PARAMS

編輯:林上睡眠不足的白癡,不應該代碼.. .so我忘了我的reject_if在我的父母模型中的accept_nested_attributes上......我認爲我得到了所有的驗證檢查。顯然,當它拒絕時它沒有給出任何類型的輸出,所以它不會在日誌中彈出,因爲它被拒絕並且不處理數據。一切工作現在

回答

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參數

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

香港專業教育學院嘗試,如果你看我貼的代碼是一樣的,你得到了什麼(只是我的名字字段),但它不更新的字段 – DRing

+0

難道你忘了允許:humanized_ingredient?要使用setter,您必須首先允許參數。 –

+0

它被稱爲嵌套屬性,它包含在父控制器的參數列表中。它正在被接受,服務器控制檯並沒有說它會拒絕它,就像我忘記添加它(之前已經發生過的那樣) – DRing