0

我已經嘗試了很多很多事情,所以我甚至不知道要給哪些代碼/錯誤。我會給我最通用的代碼。多態性模型上的Rails附件

型號:招聘,附件0​​ 附件 - 多態性協會,通過附着

工作模式

has_many :attachments, as: :attachable 
accepts_nested_attributes_for :attachments 

附件模型

belongs_to :attachable, polymorphic: true 

查看作業

= simple_form_for(@job, html: { class: 'form-horizontal', multipart: true }) do |f| 
= f.fields_for :attachable do |a| 
    = a.file_field :file_url 
= f.button :submit, class: 'btn-primary offset1' 

作業控制器

def update 
    @job = Job.find(params[:id]) 
if @job.update_attributes(params[:job]) 

時,我打提交失敗。取決於我如何嘗試去做出不同的錯誤。通過我發佈的這段代碼,我得到了Unkown屬性:可附着。我已經嘗試了很多很多不同的東西(fields_for:attachment(s),不同的模型選項等),但我現在真的需要一些幫助。

+0

當你做'fields_for:attachment'時會得到什麼錯誤?你可以發佈該日誌嗎? – vee

+0

我在@ job.update_attributes行中得到未知屬性:附件 –

回答

1

@job:attachments而不是:attachable。如果@job當前沒有任何附件,則需要提供一個附件。嘗試改爲:

= simple_form_for(@job, html: { class: 'form-horizontal', multipart: true}) do |f| 

    - # form for existing attachments 
    %strong Attachments 
    = simple_fields_for :attachments do |a| 
    = a.input :file_url 

    - # form for a new attachment 
    %strong Add Attachment 
    = f.simple_fields_for :attachments, @job.attachments.build do |a| 
    = a.input :file_url 

    = f.button :submit, class: 'btn-primary offset1' 
+0

當我這樣做時,表單不會呈現。根本不在HTML中顯示。 –

+0

我已經調整了我的答案,以解決缺少的字段。如果作業還沒有附件,則需要爲'simple_fields_for'或'fields_for'助手提供一個附件。 –

0

作業有很多附件,而不僅僅是一個。此外,關係被稱爲附件,不可附着(傳遞的「as」選項只是讓知道Rails是鏡像關係)。形式應該是這樣的:

= simple_form_for(@job, html: { class: 'form-horizontal', multipart: true }) do |f| 
    = f.fields_for :attachments do |a| 
    = a.file_field :file_url 
    = f.button :submit, class: 'btn-primary offset 

編輯: 直到你建立一個或多個與「@ job.attachments.build」的形式將不會顯示任何附件。另一種選擇是使用像以下https://github.com/ryanb/nested_form嵌套窗體的寶石。

+0

當我這樣做時,表單不呈現。根本不在HTML中顯示。 –

+0

@ mattt-爲答案增加了一些說明。 – polmiro