2016-08-03 8 views
0

Im пытается проанализировать ввод из одного поля формы, чтобы обновить 3 столбца в таблице. Я создал пользовательский атрибут и определил свои собственные методы настройки и метода getter для использования в форме. Проблема Im имеет как установить фактические данные колонки. Кажется, он не вмешивается.Обновление нескольких столбцов из одного текстового поля

Мой сеттер выглядит следующим образом:

def humanized_ingredient=(value) 
    parsed = Ingreedy.parse(value) 
    write_attribute(:amount, parsed.amount) 
    write_attribute(:name, parsed.ingredient) 
    write_attribute(:unit, parsed.unit) 
end 

У меня есть новый humanized_ingredient в Params белом списке, но он не кажется, делать что-либо на сумму, имя или единицы. В консоли сервера отсутствуют какие-либо ошибки. Ive также попытался это

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

Heres вид, а также:

<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

Edit: Im идиотом и не должен кода на небольшой сон .. .so я забыл, что у меня был reject_if на моих accepts_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

Смежные вопросы