我正在编写一个简单的单页应用。现在,form.erb有16个静态编写的表单,除了名称和ID之外都是相同的。我想把它放在form.erb只有一个表格的副本,但是迭代名字和ID 16次。
' /'被路由到form.erb
get '/' do
erb :form
end
当前的layout.erb正文是
<body>
<h2>Relay Setup</h2>
<h2><p id="CurrentTime"></p></h2>
<p><strong>Note:</strong> Set On/Off times for each relay respectively.</p>
<%= yield %>
</body>
并且当前的form.erb是
<form name="relay1" id="relay1" action="/" method="POST">
<input name="relay1" type="hidden">
<input name="label" id="label" type="text" value="<%= @label %>";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay1');">
<input type="submit">
</form>
我已经尝试在路由器中使用for循环但没有成功。 我是否只使用更多&lt;%= yield%&gt;并在路由器中迭代名称,或者在布局中是否设置了标志?如果没有,是否有其他更合适的方法来实现这一目标?
提前致谢...
答案 0 :(得分:0)
还有其他一些更合适的方法来实现这个目标吗?
你可以这样做:
<强>的routes.rb 强>:
get '/' do
@names_and_ids = [
%w[nameA idA],
%w[nameB idB],
%w[nameC idC]
]
erb :my_form
end
<强> my_form.erb 强>:
<% @names_and_ids.each do |(name, id)| %>
<form name="<%= name %>" id="<%= id %>" action="/" method="POST">
<input name="relay1" type="hidden">
<input name="label" id="label" type="text" value="<%= @label %>";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay1');">
<input type="submit">
</form>
<% end %>
使用以下views/layout.erb
:
<!DOCTYPE html>
<head><title>Sinatra App</title></head>
<body>
<h2>Relay Setup</h2>
<h2><p id="CurrentTime"></p></h2>
<p><strong>Note:</strong> Set On/Off times for each relay respectively.</p>
<%= yield %>
</body>
</html>
将生成以下html:
<!DOCTYPE html>
<head><title>Sinatra App</title></head>
<body>
<h2>Relay Setup</h2>
<h2><p id="CurrentTime"></p></h2>
<p><strong>Note:</strong> Set On/Off times for each relay respectively.</p>
<form name="nameA" id="idA" action="/" method="POST">
<input name="relay1" type="hidden">
<input name="label" id="label" type="text" value="";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay1');">
<input type="submit">
</form>
<form name="nameB" id="idB" action="/" method="POST">
<input name="relay1" type="hidden">
<input name="label" id="label" type="text" value="";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay1');">
<input type="submit">
</form>
<form name="nameC" id="idC" action="/" method="POST">
<input name="relay1" type="hidden">
<input name="label" id="label" type="text" value="";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay1');">
<input type="submit">
</form>
</body>
</html>
看起来像这样:
你真的想要多个提交按钮吗?
答案 1 :(得分:0)
7stud的回答让我在form.erb文件中找到了这个解决方案。再次感谢!
<!DOCTYPE html>
<% (1..16).each do |i| %>
<form method="POST" action="/" id="relay<%= i %>">
<input name="relay<%= i %>" type="hidden">
<input name="label" type="text" value="";">
<input type="button" value="Add ON/OFF time" onClick="addInput('relay<%= i %>');">
<input type="submit">
</form>
<% end %>