我有一张旅行表(以及一个旅游观光表,可以为一次旅行提供多个景点)。在我的新/创建表单中,我正在尝试为巡回添加多个景点。我这样做的方法是使用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>
答案 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" />
这将是你的一系列景点。