在Rails 4中嵌套Carrierwave图像

时间:2013-08-19 14:40:21

标签: ruby-on-rails ruby-on-rails-4 strong-parameters

这实际上是一个两部分的问题

为了记录 - 我正在使用Simple_form,Carrierwave和awesome_nested_fields宝石。

在我的应用程序中,我有活动,每个活动都有一个发言者,每个发言者都有一张照片。图片不是单独的表格,而是存储在“发言人”

event.rb

class Event < ActiveRecord::Base

  belongs_to :type
  ...
  has_many :speakers
  accepts_nested_attributes_for :speakers, allow_destroy: true
  ...

speaker.rb

class Speaker < ActiveRecord::Base
 belongs_to :event
 mount_uploader :photo, PhotoUploader
end

强参数(事件控制器):

private

      def event_params
        params.require(:event).permit(:title, :description, :type_id, :price, :program,
                                      :start_date, :end_date, :image, category_ids: [], 
                                      speakers_attributes: [ :id, :name, :photo, :status, :description, :url, '_destroy'])
      end

照片上传和更换没问题,但是在编辑时,问题就开始了:

编辑表格:

<%= simple_form_for @event, html: {multipart: true} do |f| %>

<%= f.other_stuff %>

  <%= f.nested_fields_for :speakers do |f| %>

  #Problem 1 - deleting uploaded images

    <%= f.check_box :remove_avatar %> # DOES NOT WORK
    <%= f.check_box :_destroy %> # DOES NOT WORK

    Problem 2 - showing an uploaded image
    <%= image_tag(@event.speaker.photo_url) if @event.speaker.photo? %> # Error - undefined method `photo?'
  <% end %>

<% end %>

我很确定第一个问题与强参数有关,我尝试了很多变化,但到目前为止我无法找出正确的参数(:photo_remove,[photos_attributes ['_ destroy']]等)

显示上传图像的第二个问题可以通过插入

来解决
   <%= image_tag @event.speakers[0].photo %>

在我的代码中,但是如果有几个扬声器,我需要更改数组整数,我似乎无法弄清楚如何做到这一点(尝试编写一个辅助方法,但到目前为止没什么好处)。

任何帮助将不胜感激,谢谢

0 个答案:

没有答案