我试图将以下参数转换为Rails表单。
{:routine=>{
:name=>"Test"},
:arbitrary=>[
{:lift=>{
:exercise_id=>"1",
:infos=>[
{:weight=>"250", :repetiton=>"8"},
{:weight=>"275", :repetition=>"6"}
]
}
},
{:lift=>{
:exercise_id=>"2",
:infos=>[
{:weight=>"405", :repetition=>"12"},
{:weight=>"445", :repetition=>"4"}
]
}
}
]
}
在学习如何在rails中正确设置表单时,我意识到在开始构建表单之前决定我想要的params是非常有帮助的。我在表格的早期阶段就遇到了问题。
在上面的参考文献中,我们有一个有名字的例程。这个例程有许多升降机,这是常规和练习之间的联接。在选择字段中,我试图让用户从Exercise.all中选择一个练习,并将exercise的实例设置为exercise_id,以便与routine_id一起创建一个提升。每个升降机都会有很多组(上面显示的参数中的信息,导轨不允许我使用套装),这些重量有重量。
在我目前的简短形式中,我选择的最后一个练习是在参数中传递的唯一练习。我在猜测,因为在进行质量分配时,第一个:电梯被第二个电梯覆盖:电梯等等。这是我目前的表格
<%= form_tag routines_path %>
<%= label_tag "routine[name]", "Routine Name" %>
<%= text_field_tag "routine[name]" %><br />
<%= select("arbitrary[][lift]", "exercise_id", Exercise.all.collect {|p| [ p.name, p.id] }) %><br />
<%= select("arbitrary[][lift]", "exercise_id", Exercise.all.collect {|p| [ p.name, p.id] }) %>
<%= submit_tag "Submit Routine" %>
有没有办法可以完成这些参数,或者我是否会选择错误的参数。我猜测,如果每个人:电梯被称为不同的东西,可以工作,但不是我想要做的。感谢任何有帮助的人。
答案 0 :(得分:0)
如果您知道要创建多少“任意”,可以使用循环创建它们......
<% 0...@maximum.each do |current_count|%>
<%= select("arbitrary[][lift][#{current_count}][]", "exercise_id", Exercise.all.collect {|p| [ p.name, p.id] }) %><br />
<% end %>
每个都有一个唯一的编号,因此他们将创建可以迭代的单独的参数集。
您只需在渲染表单之前设置@maximum。