ruby on rails - Carrierwave not uploading image for model through different controller -
i'm trying upload file carrierwave form , controller that's separate model carrierwave mounted on.
my uploader logouploader mounted on :logo
attribute of setting model.
class setting < activerecord::base validates :name, presence: true, uniqueness: true mount_uploader :logo, logouploader end
migration:
class addlogotosettings < activerecord::migration def change add_column :settings, :logo, :string end end
i have form @ views/feedback/configure.html.erb
handling image upload through feedbackcontroller
:
<%= form_tag({:action => 'save_configuration'}, id: 'form-save') %> <div class="form-group"> <%= file_field_tag "settings[cac_hlogo]" %> <%= image_tag(@cac_hlogo.logo.url) if @cac_hlogo.logo? %> </div> <div class="form-actions"> <%= submit_tag t('save').titlecase, class: 'btn btn-primary' %> </div> <% end %>
feedbackcontroller:
class feedbackcontroller < applicationcontroller def configure @cac_hlogo = setting.find_or_create_by(name: 'cac_hlogo') end def save_configuration cac_hlogo = setting.find_or_create_by(name: 'cac_hlogo') cac_hlogo.logo = params[:settings][:cac_hlogo] respond_to |format| if cac_hlogo.save format.html { redirect_to configure_feedback_index_path, notice: 'configuration saved.' } else format.html { redirect_to root_path, notice: 'there problem saving configuration.'} end end end end
i permit :logo
attribute updated in settingscontroller
:
class settingscontroller < applicationcontroller before_action :authenticate_user! load_and_authorize_resource def setting_params params.require(:setting).permit(:logo) end end
for reason file never uploads , have no idea why. parameters i'm passing in form seem right, nothing gets uploaded. missing? note: using local storage , other carrierwave uploaders in application work fine.
the solution add enctype: "multipart/form-data"
form_tag
so: <%= form_tag({:action => 'save_configuration'}, enctype: "multipart/form-data", id: 'form-save') %>
Comments
Post a Comment