使用的form_for与每个循环(Using a Form_for with an each loo

2019-10-18 10:41发布

我试图创建Rails的一种形式,它允许用户使用复选框较大的列表中选择特定的照片。 不幸的是,我还没有发现任何类似的例子,最帖子出来有没有帮助。 任何想法如何解决这个问题?

 <div>
  <%= form_for :photos, url: trip_path, method: "PUT"  do |f| %>
  <% @photos.each_with_index do |image, index|%>    
    <img src="<%= image.url %>" ><br>
      <span> <%=image.caption%> | <%=image.lat  %> | <%= image.long  %>
        <%= f.hidden_field "url", :value => image.url %>
        <%=check_box_tag('photo')  %>
      </span>
    <% end %>
    <%= f.submit 'Submit'  %>
  <% end %>
</div>

Answer 1:

API文档指出一个form_for

创建一个形式,并且围绕一个特定模型目的的范围

所以,你不能用一个集合使用。

一种可能的方式做到这一点,是使用form_tag代替form_forcheck_box_tag (你已经有了)。



Answer 2:

你描述的行为用的就是断然不可能form_form但是 ,如果你愿意放弃form_for (而且也没有理由你不应该,因为你的标准),可以通过模仿一个嵌套所描绘的行为foreach循环-包含每个循环form_for块-一个内form_tag

<div>
    <%= form_tag trip_path, method: "PUT"  do |f| %>
        <% @photos.each do |photo|%>    
            <img src="<%= photo.url %>" ><br>
            <span> <%= photo.caption%> | <%= photo.lat  %> | <%= photo.long  %>
                <%= fields_for "photos[#{photo.id}]", photo do |p| %>
                    <%= p.hidden_field 'url', :value => photo.url %>
                    <%= p.check_box 'photo'
                <% end %>
            </span>
        <% end %>
        <%= f.submit 'Submit'  %>
    <% end %>
</div>


文章来源: Using a Form_for with an each loop