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

Iterate over an array by index when click on submit button Ruby on Rails

本文关键字:按钮 提交 Ruby on Rails 单击 索引 迭代 数组      更新时间:2023-09-26

我有一个宠物实例数组,每个实例都有一个名称、类型、性别和大小等......我想遍历这个 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 %>按钮时,它都会增加宠物数组的索引。

有什么指导思想吗?

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