4

我嵌套形式與是,file_field柱,當我嘗試創建它拋出 NoMethodError在UserController中#更新 未定義的方法`[] 「爲#未定義的方法`[]」爲#<ActionDispatch :: HTTP :: UploadedFile的:0x007fae8c0bfaa8>

{ 
"utf8"=>"✓", 
"authenticity_token"=>"HFWawKp4RH7+AFV0yQ1cXpzxHDfubKTKkiDiS6QKnJk=", 
"user"=> { 
    "name"=>"Test", 
    "image_attributes"=> { 
    "picture"=>#<ActionDispatch::Http::UploadedFile:0x3f4e318 
    @original_filename="Beautiful Sky_thumb.jpg", 
    @content_type="image/jpeg", 
    @headers="Content-Disposition: form-data; name=\"user[pics_attributes][pic]\"; filename=\"Beautiful Sky_thumb.jpg\"\r\nContent-Type: image/jpeg\r\n", 
    @tempfile=#<File:C:/Users/Alex/AppData/Local/Temp/RackMultipart20120824-4784-5rmxid>> 
    } 
}, 
"commit"=>"Save User" 
} 

我的模型

class User < ActiveRecord::Base 
    attr_accessbile: :name, image_attributes 
    has_many :images 
    accepts_nested_attributes_for: images 
end 

class Image < ActiveRecord::Base 
    belongs_to :verve_app 
    mount_uploader picture, PictureUploader 
end 

我控制器

def new 
    @user = User.new 
    @user.images.build 
end 

def create 
    @user = User.new(params[:user]) 
    @user.save! 
end 

我的觀點

<%= form_for @user do |f| %> 
    <%= f.hidden_field :name, {value: 'Alex'} %> 
    <%= f.fields_for :image_attributes do |image| %> 
    <%= image.file_field :picture %> 
    <% end %> 
    <%= user.submit %> 
<% end %> 

幫我解決這個問題。

回答

0

嘗試在模型類上調用fields_for:image而不是:image_attributes。

替換您的<%= f.fields_for:image_attributes do | image | %>與<%= f.fields_for:image do | i | %>。然後將image.file_field更改爲i.file_field

看看這是否有幫助,或者至少會產生新的錯誤供我們使用。

0

在視圖中,將:image_attributes更改爲:images 其餘代碼是正確的,並且此更改應使其正常工作。如果你想在孩子(圖片)的多個實例上創建許多控制器。

這裏有一個相關的票,你可以看到的例子:Plural for fields_for has_many association not showing in view

0

不要忘記,你的模型類應該包含鉤上傳:-)

mount_uploader :picture, PictureUploader 
相關問題