我试图解析来自单个表单字段的输入以更新表中的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>
不知道为什么不采取参数
编辑:我是一个白痴,不应该在小睡觉时代码...所以我忘了我在我的父模型中的accepts_nested_attributes上有reject_if ...以为我得到了所有的验证检查。显然,当它拒绝时,它不会给出任何类型的输出,所以它不会在日志中弹出被拒绝而只是不处理数据。现在一切都按预期工作了
答案 0 :(得分:0)
这可能会有所帮助
@column_value = params[:column_value]
@table = Table.New
@table.column1 = @column_value
@table.column2 = @column_value
@table.column3 = @column_value
或者您也可以使用setter
def column_value=(value)
self.column1 = value
self.column2 = value
self.column3 = value
end
记住你必须使用:form_value in form也作为属性
如果仍然无效,请检查您是否允许:column_value参数
def params_table
params.require(:table).permit(:column_value)
end