2014-03-24 94 views
0

我有2種型號:新聞UploadedFile的軌道4,回形針和多態關聯

class News < ActiveRecord::Base 
    has_many :uploadedfiles, as: :parent 
    attr_accessible :title, :content, :author 
end 

class Uploadedfile < ActiveRecord::Base 
    belongs_to :parent, polymorphic: true 
    has_attached_file :url 
    attr_accessible :url_file_name, :url_content_type, :url_file_size, :url_updated_at 
end 

與形式:

<%= form_for(@news) do |f| %> 

    <div class="field"> 

     <%= f.fields_for :uploadedfile, f.uploadedfile.new do |uf| %> 
      <%= uf.label :url %><br> 
      <%= uf.file_field :url %> 
     <% end %> 

    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

當我提交表單,我的表uploadedfile沒有改變

問題在哪裏?謝謝!

回答

4

我想你已經嵌套arribute :uploadedfiles

class News < ActiveRecord::Base 
    has_many :uploadedfiles, as: :parent 
    attr_accessible :title, :content, :author, :uploadedfiles_attributes 
    accept_nested_attributes_for :uploadedfiles 
end 

而在形式: 變化:

<%= f.fields_for :uploadedfile, f.uploadedfile.new do |uf| %> 

到:

<%= f.fields_for :uploadedfiles, Uploadedfile.new do |uf| %> 
+0

謝謝! 我剛剛在news-model中添加:uploadedfiles_attributes到attr_accessible,現在行被添加到sql-table中。但上傳的文件字段爲空 – Vyacheslav

+0

謝謝!我剛剛將':url'重命名爲':file',並將'attr_accessible:file'字符串添加到'uploadedfiles'模型​​。 它的工作原理! – Vyacheslav

0

我不認爲你需要這裏的多態關聯。下面是這樣做的更可讀的方式:

class News < ActiveRecord::Base 
    has_many :uploadedfiles 
    attr_accessible :title, :content, :author 
    accept_nested_attributes_for :uploadedfiles 
end 

class Uploadedfile < ActiveRecord::Base 
    belongs_to :news 
    has_attached_file :url 
    attr_accessible :url_file_name, :url_content_type, :url_file_size, :url_updated_at 
end 

*請注意,我已經添加accept_nested_attributes_for

而且形式:

<%= form_for(@news) do |f| %> 

    <div class="field"> 

     <%= f.fields_for :uploadedfiles do |uf| %> 
      <%= uf.label :url %><br> 
      <%= uf.file_field :url %> 
     <% end %> 

    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 
+0

謝謝!現在ruby在窗體中構建helper,但sql-table'uploadedfile'沒有改變:c也許我應該向控制器添加一些代碼? – Vyacheslav

+0

由於您使用的是Rails 4,因此您需要允許這些參數。應該有像params.require(:news).permit(:name ....)。您應該添加uploadedfiles字段。像這樣: params.require(:news).permit(:name,:whatever,...,:uploadedfiles_attributes => [:url]) – ermenkoff

+0

我已經允許這些參數: params.require(:news) .permit(:title,:content,:author,:uploadedfiles_attributes => [:url]) – Vyacheslav