【发布时间】:2018-12-31 07:40:55
【问题描述】:
这个问题在 SO 上被问了很多次。主要问题是没有什么适合我的情况。
情况是,我无法将键入的内容作为数组存储在数据库列中。
text_field,其代码为:
= text_field_tag 'product[keywords][]', @product.keywords, class: 'tab-input
product_keywords'
在控制器中的强参数是:
params.require(:product).permit(:id, :name, :keywords => [])
Jquery 代码在输入错误值时不会在删除时删除值,而是在每个元素后添加逗号,因为我想在一列中采用逗号分隔值。
$(document).on 'keyup', '.product_keywords', ->
keyword = @value.replace(/(\w)[\s,]+(\w?)/g, '$1, $2')
if keyword != @value
@value = keyword
return
型号代码:
serialize :keywords, Array
迁移代码:
class AddKeywordsToProducts < ActiveRecord::Migration[5.1]
def change
add_column :products, :keywords, :text
end
end
所以,如果有人写,abc 并点击空格,最后会添加一个逗号。输入三个单词后,它看起来像:
abc, dbx, she
现在我想将它作为数组存储在列中,但它没有正确存储。 它存储为:
["abc, dbx, she"]
另外请谁能告诉我处理这些案件的最佳案例? 加上使用 ruby 处理此类情况的最佳实践,以便我将来学习它?
【问题讨论】:
-
您可以使用
str.split(/\s*,\s*/)拆分字符串并将其用作数组,这也将删除前导空格和无效空格 -
@ray 我需要在什么阶段这样做?
-
检查已发布的答案,是否有效
标签: ruby-on-rails arrays ruby ruby-on-rails-5.1