2

我使用回形针上传附加到学生课程作业的多个文件,但我失败了。

模型

class StudentCourseAssignment < ActiveRecord::Base
    attr_accessible :score, :comment, :finish_status,:attachments
    accepts_nested_attributes_for :attachments
    belongs_to :assignment
    belongs_to :user
    has_many :attachments ,:as => :attachmentable,:dependent => :destroy
end

class Attachment < ActiveRecord::Base
    attr_accessible :user_upload 
    belongs_to :attachmentable , :polymorphic => true
    has_attached_file :user_upload
end

控制器

**new**

    @sca = StudentCourseAssignment.new 
    @sca.attachments.build
    @sca.attachments.build

**create**

    @sca = StudentCourseAssignment.new(params[:student_course_assignment])
    @assignment = Assignment.find(params[:assignment_id])
    @sca.user = current_user
    @sca.assignment = @assignment
    if @sca.save
        flash[:alert] = "success"
        redirect_to course_years_path
    else
        flash[:alert] = "fail"
        redirect_to course_years_path
    end

** 看法**

<%= form_for @sca, :url => assignment_student_course_assignments_path(@assignment),
:html => { :id => 'student-assignment-form', :multipart => true } do |f| %>
file:
<%= f.fields_for :attachments do |a_f| %>
<%= a_f.file_field :user_upload %>
<%= submit_tag "create" %>
<% end%>
<% end %>

错误的

No association found for name `attachments'. Has it been defined yet?

如果去掉accepts_nested_attributes_for :attachments,还是不对

Attachment(#70201401779680) expected, got Array(#70201383294620)

希望你的帮助!谢谢!

4

2 回答 2

2

改变

从:

attr_accessible :score, :comment, :finish_status,:attachments

至:

attr_accessible :score, :comment, :finish_status,:attachments_attributes
于 2013-01-10T16:46:47.233 回答
1

我意识到这是一个老问题,但我认为你需要搬家

accepts_nested_attributes_for :attachments

之后出现

has_many :attachments, :as => :attachmentable,:dependent => :destroy

我曾经在一个项目中遇到过这个问题;很确定它归结为accepts_nested_attributes_for期望关系在调用之前已经被声明。

于 2014-07-21T05:10:35.200 回答