所以我一直在想測試我的模型,看看我是否可以通過軌道控制檯中使用Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
添加圖片,但我可以上市了以下錯誤下面。我這樣做是因爲我無法得到一張圖片以保存在我的Rails應用程序中,我只是重新渲染了new
模板,並在新視圖中部分列出了表單。不能讓孩子屬性通過軌道加載ActiveModel控制檯父模型保存:: UnknownAttributeError:
我不知道如何任何人,因爲從我可以看到我的模型都很好故障排除這些錯誤。而且我的遷移看起來也很好。我想accept_nested_attributes_for
允許Picture
模型屬性通過Gallery
模型傳遞。
在控制檯中的錯誤是
irb(main):002:0> Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
ActiveModel::UnknownAttributeError: unknown attribute 'picture' for Gallery.
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:48:in `_assign_attribute'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `each'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/core.rb:319:in `initialize'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from (irb):2
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'irb(main):003:0> ^C
irb(main):003:0>
我的模型,畫廊
class Gallery < ApplicationRecord
has_many :pictures
validates :name, presence: true
validates :cover, presence: true
accepts_nested_attributes_for :pictures, allow_destroy: true
end
圖片
class Picture < ApplicationRecord
belongs_to :gallery
validates :gallery_id, presence: true
validates :picture, presence: true
mount_uploader :picture, PictureUploader
serialize :picture, JSON
end
遷移,畫廊
class CreateGalleries < ActiveRecord::Migration[5.0]
def change
create_table :galleries do |t|
t.string :name
t.integer :cover
t.timestamps
end
end
end
張
圖片
class CreatePictures < ActiveRecord::Migration[5.0]
def change
create_table :pictures do |t|
t.integer :gallery_id
t.string :picture
t.timestamps
end
end
end
嗨好吧,現在的作品有點混亂。我是否需要在控制器中以這種方式執行此操作,保存每個實例,因爲我無法使用標準方式'@gallery = Gallery.new(gallery_params)'保存它? –
@LeeEather不需要。我們可以藉助強大的參數。如果你可以問另一個問題,我可以幫你 – Pavan
這裏是問題[這裏](http://stackoverflow.com/questions/43951335/rails-nested-attributes-not-saving-using-carrierwave)和改變'你的答案中的'圖片'到'圖片'。 –