[这可能是一个简单的问题,但我找不到解决方案]
我正在尝试使用新数据更新现有记录并将一些图像添加到该记录(通过回形针),但是,我的代码根本不显示paperclip
字段。
I've followed this example并尝试使用this solutions,但没有任何效果。
我有两个,型号Hotel
和HotelImage
。
hotel.rb
class Hotel < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
validates :name, presence: true
validates :location, presence: true
has_many :hotel_images
accepts_nested_attributes_for :hotel_images
def slug_candidates
[
[:name, :location],
]
end
end
hotel_image.rb
class HotelImage < ActiveRecord::Base
belongs_to :hotel
#rails generate paperclip hotel_image image
has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
end
edit.html.erb
<%= simple_form_for @hotel, :url => admin_hotel_path, method: :put, html: { multipart: true } do |f| %>
<%= f.error_notification %>
<%= f.input :name %>
<%= f.input :location %>
<%= f.simple_fields_for :hotel_images do |ff| %>
<%= ff.input :image, as: :file %>
<% end %>
<%= f.button :submit %>
<% end %>
hotels_controller.rb
#other code
def update
@hotel = Hotel.friendly.find(params[:slug])
if @hotel.update(hotel_params)
redirect_to admin_hotels_path, notice: 'Hotel was successfully updated.'
else
render :edit
end
end
private
def hotel_params
params.require(:hotel).permit(:name, :location, :admin_id, hotel_images_attributes: [:hotel_id, :image])
end
这是表单的打印屏幕,您可以在其中看到缺少回形针字段:
但是,当我将f.simple_fields_for :hotel_images
更改为f.simple_fields_for :foobars
时,会显示回形针字段:
注意:name
和location
属性更新正常。
答案 0 :(得分:1)
def update
@hotel = Hotel.friendly.find(params[:slug])
if @hotel.update(hotel_params)
redirect_to admin_hotels_path, notice: 'Hotel was successfully updated.'
else
render :edit
end
end
def edit
@hotel_images = @hotel.hotel_images.present? ? @hotel.hotel_images : @hotel.hotel_images.build
end
试试此代码