我有一个模型属性'options',我希望用一些参数记录它。例如:
options:
name: 'username'
address: 'useraddress'
age: 'userage'
为此,我使用序列化
serialize :options, Hash
如何为此工作制作正确的表格
如何制作?
抱歉我的英文不好
答案 0 :(得分:0)
在模特使用中
serialize :options
当您将options
保存到db
时,请执行以下操作:
object.options = {name: 'username', address: 'useraddress', age: 'userage'}
object.save # in database it will save hash as string, but serialize it.
当您从options
阅读db
时,
opt = User.first.options # ou will get Hash object
# opt = {name: 'username', address: 'useraddress', age: 'userage'}
# opt is now a Ruby Hash object
在您的视图中,您必须添加3个输入字段
<input type='text' name='user[options_name]'>
<input type='text' name='user[options_address]'>
<input type='text' name='user[options_age]'>
在您的控制器中,您将拥有
params[:user][:options_name], params[:user][:options_address], params[:user][:options_age]
使用这3个变量设置选项字段的值,但将其设置为Hash
答案 1 :(得分:0)
像这样解决了这个问题
以表格
查看= form_for @user do |f|
= f.fields_for :options do |o|
= o.text_field :username, class: "form-control", placeholder: "Name"
= o.text_field :useraddress, class: "form-control", placeholder: "Say your price"
= o.text_field :useraddress, class: "form-control", placeholder: "Enter your address"
允许控制器中的参数
def user_params
params.require(:user).permit(:email, options: [:name, :price, :address])
end