我有一个Pet实例数组,每个实例都有一个名称,类型,性别和大小等...我想迭代这个Pet实例集合并逐个显示它们。
这是我到目前为止所做的:
<% @pets.each do |pet| %>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Sex</th>
<th>Age</th>
<th>breed</th>
<th>Size</th>
<th>Picture</th>
<th>Description</th>
<th>Shelter_id</th>
<th>Shelter</th>
<th>Phone</th>
<th>Email</th>
<th>City</th>
<th>Zip</th>
<th>Like</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= pet.name %></td>
<td><%= pet.species %></td>
<td><%= pet.sex %></td>
<td><%= pet.age %></td>
<td><% pet.breeds.each do |breed| %>
<li><%= breed.name %></li>
<%end%>
</td>
<td><%= pet.size %></td>
<td><%= image_tag pet.picture %></td>
<td><%= pet.description %></td>
<td><%= pet.shelter_id %></td>
<% shelter = Shelter.find(pet.shelter_id)%>
<td><%= shelter.name %></td>
<td><%= shelter.phone %></td>
<td><%= shelter.email %></td>
<td><%= shelter.city %></td>
<td><%= shelter.zip %></td>
<td><%= form_for pet, :url => { :controller => "favorite_pets", :action => "create" }, :html => {:method => :post} do |f| %>
<%= f.text_field :id %>
<%= f.submit %>
<% end %>
</td>
</tr>
</tbody>
</table>
<%end%>
所以现在,我需要两个想法。
第一
当用户单击提交按钮(<%= f.submit %>
)发送POST请求时,我不希望页面重新加载,也不希望将我重定向到另一个页面。我环顾四周,:remote => true
中包含的form_for
似乎可以解决这个问题,但我需要更多的帮助。
第二
我希望控制迭代@pets
,以便只显示第一个pet[0]
,每次点击<%= f.submit %>
按钮时,不会重新加载页面但它显示数组pet[1]
我想我需要设置一种计数器,每当用户点击<%= f.submit %>
按钮时,它会增加pet数组的索引。
任何指导性的想法?
答案 0 :(得分:1)
如果我这样做,我会使用一些javascript。因此,您的提交按钮变成了更多的“添加按钮”,它实际上并没有提交任何内容。它只会将该对象(在您的情况下为宠物及其信息)添加到javascript数组中,并在窗口上显示新对象(同样是宠物以及信息)。然后创建另一个按钮来实际提交所有宠物。 (javascript数组)