Ich verwende Büroklammer in verschachtelten Attributen und ich bin mir nicht sicher, was ich vermisse. In der Ansicht des Formulars fehlt die Option zum Hochladen von Dateien.Fehlendes Dateifeld in verschachtelten Attributen
Formular
<%= form_with(model: news, local: true, html: { multipart: true }) do |form| %>
<%= form.fields_for :images do |img| %>
<%= img.file_field :img, multiple: true %>
<% end%>
<% end %>
Modelle
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 :img, :styles => { :show => "600x600>" }, size: { less_than: 2.megabytes }
validates_attachment_content_type :img, :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png"]
end
-Controller
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, :img, :news_id, :_destroy])
end
end
Wenn ichändernbis :image
in Form das Feld erscheint, aber dann gibt einen Fehler auf Vorlage:
Unpermitted parameter: :image
Funktioniert! Seltsam, warum muss man in Rails 5 die Build-Methode in der Form aufrufen und nicht den Controller unter New? – DollarChills
@DollarChills Ich denke, es hat mit 'Modell: Nachrichten' in' Form_with' zu tun. Um neugierig zu sein, versuchen Sie, 'fields_for' so zu halten, wie es vorher war, und ändern Sie' <% = form_with (model: news, local: true, html: {multipart: true}) do | %> 'bis' <% = form_with (Modell: @news, lokal: true, html: {multipart: true}) do | form | %> ' – Pavan
Diese Methode funktioniert besser. Dies listet alle Bilder beim Bearbeiten auf, während die andere Methode dies nicht tut. Frage mich, ob es Änderungen an diesen verschachtelten Attributen mit Rails 5 gibt? – DollarChills