单击提交按钮Ruby on Rails时,按索引迭代数组

时间:2015-03-13 02:50:40

标签: javascript jquery ruby-on-rails ruby

我有一个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数组的索引。

任何指导性的想法?

1 个答案:

答案 0 :(得分:1)

如果我这样做,我会使用一些javascript。因此,您的提交按钮变成了更多的“添加按钮”,它实际上并没有提交任何内容。它只会将该对象(在您的情况下为宠物及其信息)添加到javascript数组中,并在窗口上显示新对象(同样是宠物以及信息)。然后创建另一个按钮来实际提交所有宠物。 (javascript数组)