我很难让rails 4使用nested_attributes和serialize。我有:
class Client < ActiveRecord::Base
belongs_to :event
serialize :phones
end
class Event < ActiveRecord::Base
has_one :client
end
class EventsController < ApplicationController
...
def event_params
params.permit(client_attributes: [:phones])
end
end
当我通过活动时:
{client_attributes: { phones: 'string'}}
它有效,但是当我尝试
时{client_attributes: { phones: [{phone_1_hash},{phone_2_hash}]}}
我收到'未经许可的参数:手机'消息和字段未保存...
我试过用
class EventsController < ApplicationController
...
def event_params
params.permit(client_attributes: [phones:[]])
end
end
或
class Client < ActiveRecord::Base
belongs_to :event
serialize :phones, Array
end
但到目前为止没有任何帮助。任何建议,将不胜感激。谢谢!
答案 0 :(得分:6)
Pfff - 终于搞定了......有了强参数,没有未知密钥可以通过,所以这里的解决方案是:
class EventsController < ApplicationController
...
def event_params
params.permit(client_attributes: [ {phones: [:number, :type]}])
end
end
基于http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit-21
希望它有所帮助。
我可以在我的serialisable字段中指定密钥,但是用户添加密钥的是什么?序列化字段是否可以使用强参数? (这可能应该是一个新问题...)