如何使用Javascript更改hidden_​​field数组而不会丢失其正确的格式?

时间:2016-02-23 08:08:02

标签: javascript jquery ruby-on-rails

在我的Rails控制器中,我需要一个像这样格式的数组direct_filter_params(多维数组,可能有n个元素):

direct_filter_params = [['gender','equals','male'], ['age','range',21,25]]

我从一个表单中得到这个,有一个hidden_​​field_tag:direct_filter_params:

<%= form_tag(user_demography__path, :method => :get, :remote => true) do %>
<%= hidden_field_tag :direct_filter_params %>
<%= render :partial => "user_demography_filters" %>
<%= submit_tag "Find Users", :class => "btn" %>
<% end %>

我需要从表单中获取值。在click()事件触发后,我可以在javascript文件中获取值,但我遇到的问题是Javascript / Jquery没有以正确的格式设置值。我知道这很令人困惑,所以我举一个简短的例子。

var a = [];
attribute = 'gender';
condition = 'equals';
value = 'Male';
var b = [attribute, condition, value];
$("direct_filter_params").val(b);
c=$("#direct_filter_params").val();
$("#direct_filter_params").val(c+b);

这将元素的值设置为:

<input type="hidden" name="direct_filter_params" id="direct_filter_params" value="gender,equals,Maleage,range,21,25">

注意值是“性别,等于,马来人,范围,21,21”。我需要的是顶部提到的原始格式的值。我已经搜索了几个小时,但是我无法解决这个问题,尽管所有的逻辑都已完成,但我仍陷入这个小问题。

1 个答案:

答案 0 :(得分:0)

试试这个

var b = [attribute, condition, value],
    c = $("#direct_filter_params").val(),
    a = [b,c];
$("#direct_filter_params").val(JSON.stringify(a));