多个回形针文件上传的未允许参数Rails4

我有一个ruby 2.0.0和rails 4.0.0应用程序,它有一个’吉他’和’照片’模型。 我已经使用paperclip在Rails3中上传了一个文件,但是我很想在Rails 4中上传多个文件。我创建了第二个模型来保存所说的照片,并读取强大的参数等等。我收到错误时试图将3张照片添加到吉他上。 在日志中:“未授权的参数:photos_attributes”。 我尝试将photos_attributes添加到白名单中,没有任何乐趣。 我把头发拉到这里 – 网页视图中没有错误,但当我进入并输入’Photo.all’时,我什么都没得到。 我究竟做错了什么? 我是一个新手,请温柔。

guitar.rb

class Guitar < ActiveRecord::Base belongs_to :user has_many :photos accepts_nested_attributes_for :photos end 

photo.rb

 class Photo ', square: '200x200#', medium: '300x300>', large: '600x6003' } end 

guitars_controller.rb

 class GuitarsController < ApplicationController before_action :set_guitar, only: [:show, :edit, :update, :destroy] # GET /guitars # GET /guitars.json def index @guitars = Guitar.all end # GET /guitars/1 # GET /guitars/1.json def show end # GET /guitars/new def new @guitar = current_user.guitars.build 3.times {@guitar.photos.build} end # GET /guitars/1/edit def edit 3.times {@guitar.photos.build} end # POST /guitars # POST /guitars.json def create @guitar = current_user.guitars.build(guitar_params) respond_to do |format| if @guitar.save format.html { redirect_to @guitar, notice: 'Guitar was successfully created.' } format.json { render action: 'show', status: :created, location: @guitar } else format.html { render action: 'new' } format.json { render json: @guitar.errors, status: :unprocessable_entity } end end end # PATCH/PUT /guitars/1 # PATCH/PUT /guitars/1.json def update respond_to do |format| if @guitar.update(guitar_params) format.html { redirect_to @guitar, notice: 'Guitar was successfully updated.' } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @guitar.errors, status: :unprocessable_entity } end end end # DELETE /guitars/1 # DELETE /guitars/1.json def destroy @guitar.destroy respond_to do |format| format.html { redirect_to guitars_url } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_guitar @guitar = Guitar.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def guitar_params params.require(:guitar).permit(:make, :model, :year, :color, :serial, :price, :condition, :kind, :bodykind, :frets, :oneowner, :user_id, :description, :photos_attributes) end end 

意见/吉他/ _form.html.erb

  { :multipart => true } do |f| %>  

prohibited this guitar from being saved:













DB / schema.rb

 ActiveRecord::Schema.define(version: 20131014195859) do create_table "guitars", force: true do |t| t.string "make" t.string "model" t.string "year" t.string "color" t.string "serial" t.string "price" t.integer "condition" t.string "kind" t.string "bodykind" t.string "frets" t.boolean "oneowner" t.integer "user_id" t.datetime "created_at" t.datetime "updated_at" t.string "description" end add_index "guitars", ["user_id"], name: "index_guitars_on_user_id", using: :btree create_table "photos", force: true do |t| t.integer "guitar_id" t.datetime "created_at" t.datetime "updated_at" t.string "photo_file_name" t.string "photo_content_type" t.integer "photo_file_size" t.datetime "photo_updated_at" end create_table "users", force: true do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.datetime "created_at" t.datetime "updated_at" t.string "city" t.string "state" end add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree end 

有一个错字。

 :photos_attributes => [:photo] 

用以下内容替换现有代码并尝试运行该应用程序。

 def guitar_params params.require(:guitar).permit(:make, :model, :year, :color, :serial, :price, :condition, :kind, :bodykind, :frets, :oneowner, :user_id, :description, :photos_attributes [:photo]) end 

或者您可以查看以下链接,其中我创建了一个具有嵌套属性的示例应用程序。

嵌套属性示例