我试图创建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>
API文档指出一个form_for
创建一个形式,并且围绕一个特定模型目的的范围
所以,你不能用一个集合使用。
一种可能的方式做到这一点,是使用form_tag
代替form_for
和check_box_tag
(你已经有了)。
你描述的行为用的就是断然不可能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>