在铁轨中传递隐藏的字段

时间:2015-04-25 01:52:59

标签: jquery ruby-on-rails

我有一张旅行表(以及一个旅游观光表,可以为一次旅行提供多个景点)。在我的新/创建表单中,我正在尝试为巡回添加多个景点。我这样做的方法是使用jQuery,将输入表单的所有值“加入”为单个字符串,并将其设置为单个隐藏字段的值。一旦它碰到模型然后将每一个添加到表中,我就失去了如何扩展它。有什么想法吗?

tour.js

  $("#new_tour").on("submit", function(event){
     event.preventDefault();
     var inputs = $.map($(".sight_field"), function(input_element){
        return input_element.value;
     });
     var inputs_joined = inputs.join("|");
     $(":hidden").val(inputs_joined);
}); 

index.html.erb的一部分

<div class="input_fields_wrap">
   <button class="add_field_button">Add More Sights</button>
      <%= f.label :sights %>
    <input type="text" class="sight_field">
</div>
<div>   
<%= f.hidden_field :sights %>
</div>

1 个答案:

答案 0 :(得分:2)

使用rails你不需要做这些事情。

在字段周围创建一个正确的表单,然后让它提交。在你的控制器中,所有变量都在params-hash中。例如。

class reciprocal
{
    public static void main ( int n)
    {
        float i,a,s=0;
        for(i=1;i<=n;i++)
        {
            a= 1/i;
            s+=a;
        }
        System.out.print( "sum is "+s);
    }
}

如果它变得复杂,你可以使用

之类的东西
params[:sights]

会导致控制器

<input type="hidden" name="seeing[paris][sight]" value="fine" />
<input type="hidden" name="seeing[munich][sight]" value="fantastic" />

如果由于某种原因不可行,你也可以这样做:

params[:seeing][:paris][:sight]
params[:seeing][:munich][:sight]

在控制器中

<input type="hidden" name="sights" value="fine, fantastic, ok" />

这将是你的一系列景点。