【发布时间】:2015-11-23 09:57:23
【问题描述】:
我有一个用于用户、投资组合和照片的嵌套表单。基本上,用户可以通过以另一种形式上传照片来创建投资组合。但是,然后我想给他们一个创建新作品集的机会,方法是从他们正在查看的当前作品集中选择一些照片,并让 PortfolioController 中的方法 resubmit 为他们创建一个新作品集。这些模型是:
class User < ActiveRecord::Base
has_many: portfolios
end
class Portfolio < ActiveRecord::Base
has_many: photos
belongs_to: user
end
class Photo < ActiveRecord::Base
belongs_to: portfolio
attr_accessor :move
end
控制器是:
class PortfolioController < ApplicationController
//... some generic code
def resubmit
// This is where I need help
end
def display
@userPortfolio = Portfolio.where(:id => params[:uid]).first
end
end
视图是:
<%= simple_form_for @userPortfolio, :url => {:action => resubmit} do |f|%>
<%= f.label current_user.name %>
<% @images = @userPortfolio.photos %>
<% @images.each do |anImage| %>
<%= f.fields_for :anImage do |ff| %>
<%= ff.checkbox :move, :id => "move_#{anImage.id}" %><%=ff.label :move, "Move image #{anImage.name} to new portfolio?" %>
<% end %>
<% end %>
<%= f.submit "Create new portfolio" %>
<% end %>
基本上,一旦用户点击提交,我希望 resubmit 方法创建一个新的投资组合,其中包含与所选照片相同的新照片集合。也就是说,我想创建1条新记录portfolio和几条新记录photo,根据用户选择的照片的属性,用户选择的数量,所以我需要访问代表的记录选择的照片。如何访问用户选择的所有照片?我不能简单地在表单上创建一组有限的复选框控制器,因为显示的数量取决于当前投资组合中的照片数量。
【问题讨论】:
标签: ruby-on-rails forms