[RUBY] fields_for wird so verwendet

Verfahren

  1. Modell bearbeiten

item.rb


has_many :images
accepts_nested_attributes_for :images

image.rb


belongs_to :item, optional: true  #Lassen Sie keine externen Schlüssel zu
mount_uploader :image, ImageUploader
  1. Controller bearbeiten

item_controller.rb



def new
  @item = Item.new
  @item.images.build
end

def create
  @item = Item.new(item_params)
  redirect_to root_path
end

def edit
  @item = Item.find(params[:id])    
end

def update
  @item = Item.find(params[:id]) 
  @item.update(update_item_params)
  redirect_to root_path
end

def item_params
  params.require(:item).permit(:name, :infomation, :price, images_attributes: [:image] )
end

def update_item_params
  params.require(:item).permit(:name, :infomation, :price, images_attributes: [:image, :_destroy, :id] ) #Beim Bearbeiten müssen destroy und id in das Array eingefügt werden
end

  1. Ansicht bearbeiten
<%= form_for @item do |f| %>

  <%= f.text.field :name %>
  <%= f.text.field :infomation %>
  <%= f.text.field :price %>

  <%= f.fields_for :image do |i| %>
    #Anzeigen, ob ein Bild vorhanden ist
    <%= image_tag(i.object.content) %> 
    <%= i.file_field :image %>

  <%= f.submit %>

<% end %>

das ist alles

Recommended Posts

fields_for wird so verwendet
API sieht so aus!
Dies ist der erste Beitrag.
[Ruby] Wofür wird `!!` verwendet?
Wenn SimpleDateFormat wie ٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧ verstümmelt ist
[Rails] fields_for wird nicht angezeigt
Dieses Problem ist nüchtern schwierig ... (Ruby)
Warum Java Vector nicht verwendet wird