2013-10-26 16 views
0

我正在rails中使用form_tags,并使用MongoDB作为我的应用程序。需要Rails数组值的双引号,如[“1”,“2”,“3”]

使用的form_tag我得到PARAMS [:IDS]使用POST方法类似这样的

["5262353ebd521b131a000010", "526b47f8bd521bd1b3000002"] 

,我保存这个PARAMS [:ID]作为hidden_​​field作为

<%= f.hidden_field :ids, :value => params[:ids].join(","), :multiple => true %> 

但其存储在MongoDB中这样

"ids" : [ 
     "5262353ebd521b131a000010,526b47f8bd521bd1b3000002" 
    ], 

但取而代之的是我需要存储的,

"ids" : [ 
     "5262353ebd521b131a000010","526b47f8bd521bd1b3000002" 
    ], 

双引号, 对于单ID,它的工作的罚款。对于多个值,其不存储如上。

请在这方面帮助我。

+0

之前保存的对象,在'PARAMS分割字符串[:IDS]'使其成为一个数组。 –

+0

,但它会显示为“[[\”5262353ebd521b131a000010 \“,\”526b47f8bd521bd1b3000002 \“]]”。所以为了使它成为MangoDB ObjectID我需要存储为[“1”,“2”,“3”]。 – RubyOnRails

+0

好吧,修复你的显示代码。 –

回答

1

你可以让张贴到你的控制器时,每个值创建一个隐藏字段,你把它作为一个数组:

<% params[:ids].each do |id| %> 
    <%= hidden_field_tag "ids[]", id %> 
<% end %> 

就这样,你会得到你的行动数组,可以直接用你的模型存储参数[:ids]。

1

尝试这个<%= f.hidden_field :ids, :value => params[:ids].join('","'), :multiple => true %>

+0

如果你有在解析'错误“'(双引号),逃避他们,然后再试一次 –

+0

是的,已经尝试过,但它的结果是这样。‘doctor_ids’: \t \t‘5262353ebd521b131a000010 \’,\” 526b47f8bd521bd1b3000002" \t], – RubyOnRails

0
<% params[:ids].each do |id| %> 
    <%= f.hidden_field :ids, :value => id, :multiple => :true %> 
<% end %> 

这工作,我的MongoDB是,

"ids" : [ 
     ObjectId("526b47f8bd521bd1b3000002"), 
     ObjectId("5262353ebd521b131a000010") 
    ], 

Cheers!!!