레일 5의 중첩 된 속성을 통해 종이 클립을 사용하여 여러 이미지를 추가하려고합니다.
내가 무엇을 놓치고 있는지 잘 모르겠지만 속성을 참조하는 다음 오류가 발생합니다.
Unpermitted parameter: :image
내 뉴스 컨트롤러 속성에서 이미지 속성을 참조하고 있습니다. 아래를 참조하세요. 이미지는 데이터베이스에 저장되지 않습니다.
모델
class News < ApplicationRecord
has_many :images, dependent: :destroy
accepts_nested_attributes_for :images, allow_destroy: true
end
class Image < ApplicationRecord
belongs_to :news
has_attached_file :image, :styles => { :show => "600x600>" }, size: { less_than: 2.megabytes }
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png"]
end
제어 장치
class NewsController < ApplicationController
def new
@news = News.new
@news.images.build
end
def create
@news = News.new(news_params)
respond_to do |format|
if @news.save
format.html { redirect_to @news, notice: 'News was successfully created.' }
format.json { render :show, status: :created, location: @news }
else
format.html { render :new }
format.json { render json: @news.errors, status: :unprocessable_entity }
end
end
end
private
def set_news
@news = News.find(params[:id])
end
def news_params
params.require(:news).permit(:title, :description, :category, images_attributes: [:id, :image, :news_id, :_destroy])
end
end
형태
<%= form.fields_for :image do |img| %>
<%= img.file_field :image, multiple: true %>
<% end%>
결과를 보냈습니다.
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kFPv2dZE6J9uHi4pu1qM+ZgDwXbFadjD2KjlhmLmk7LosumgB0vWQWA6zPJRe0b38JSSUZHYKRd4G6XAYEgmwA==", "news"=>{"title"=>"News Title", "description"=>"Random text goes in here.", "category"=>"", "image"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007feed58a5ba8 @tempfile=#<Tempfile:/var/folders/n1/dt5dwx0n7rx59_3bpvp64x400000gp/T/RackMultipart20170822-995-firof5.jpg>, @original_filename="03.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"news[image][image]\"; filename=\"03.jpg\"\r\nContent-Type: image/jpeg\r\n">}}, "commit"=>"Update News", "id"=>"1-news-title"}
허용되지 않는 매개 변수 : : image
당신이 가지고 있기 때문에 has_many :images
, 당신은해야 form.fields_for :images
하지form.fields_for :image
<%= form.fields_for :images do |img| %>
<%= img.file_field :image, multiple: true %>
<% end%>
최신 정보:
이 경우 명시 적으로 a record_object
를fields_for
<%= form.fields_for :images, @news.images.build do |img| %>
<%= img.file_field :image, multiple: true %>
<% end%>
또한 이미지에 대한 여러 값을 보내려면 허용 된 매개 변수의 배열이어야합니다. news_params
아래로 변경해야 합니다.
def news_params
params.require(:news).permit(:title, :description, :category, images_attributes: [:id, :news_id, :_destroy, image: []])
end
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다