ActionController :: ParameterMissing (параметр отсутствует или значение пусто) - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с одной из моих форм.

<%= form_for [@listing, @bike, @photo], html: { multipart: true } do |f| %>
    <div class="custom-file col-sm-10 mt-4">
      <%= f.file_field :attachment, class: "custom-file-input" %>
      <label class="custom-file-label">Ajouter une photo</label>
    </div>
    <%= f.submit "Enregistrer", class: "btn btn-primary float-sm-right mt-4" %>
<% end %>

Когда я просматриваю новый файл и нажимаю на кнопку отправки, все работает нормально. Но когда я нажимаю кнопку «Отправить», не просматривая изображения, я получаю эту ошибку:

ActionController :: ParameterMissing (параметр отсутствует или значение пусто: фотография):

Форма помещена в мой index.html.erb. Есть мой контроллер методов:

class PhotosController < ApplicationController
  before_action :authenticate_user!
  before_action :find_listing, :find_bike

  def index
    @photos = @bike.photos
    @photo = Photo.new
  end

  def create
    @photo = Photo.new(photo_params)
    if @photo.save
        flash[:success] = "Photo ajoutée avec succès"
        redirect_to listing_bike_photos_path(listing_id: @listing, bike_id: @listing.bike)
    else
        flash[:error] = @photo.errors.values
        redirect_to listing_bike_photos_path(listing_id: @listing, bike_id: @listing.bike)
    end
  end

  private

  def photo_params
        params.require(:photo).permit(:id, :attachment, :legend).merge(bike_id: @bike.id)
  end

  def find_listing
      @listing = Listing.find(params[:listing_id])
  end

  def find_bike
    @bike = Bike.find(params[:bike_id])
  end

end

И вот, мои маршруты:

resources :listings, except: [:show, :edit] do
    resources :bikes, except: [:edit] do
      resources :photos
    end
end

Полагаю, я сделал что-то не так. Но я не вижу, откуда возникла проблема. Может ли кто-нибудь помочь мне найти проблему? Заранее большое спасибо.

РЕДАКТИРОВАТЬ

Вот моя фотомодель:

class Photo < ApplicationRecord
  belongs_to :bike, optional: true

  has_attached_file :attachment, styles: { medium: "300x300#", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
  validates_attachment_content_type :attachment, content_type: /\Aimage\/.*\z/

  validates :attachment, presence: true
end

И мои похожие журналы:

Начато POST "/ Listings / 10 / bikes / 10 / photos" для 127.0.0.1 в 2018-09-06 09:32:13 +0200 Обработка PhotosController # создать как HTML Параметры: { "UTF-8" => "✓", "authenticity_token" => "MV4dOYOFinOZsJjr + LlFRMIsDtQyPOxmlaV6PhEUZ1I + l5QS / bvwBRWc / EXLuw59F / B1Rgt6 / 5r79 + bCiq3h6w ==", "совершить" => "Enregistrer", "listing_id" = > "10", "bike_id" => "10"} Пользовательская нагрузка (0,3 мсек) SELECT users. * ОТ users ГДЕ users. id = 3 ЗАКАЗАТЬ ПО users. id ASC LIMIT 1 Загрузка списка (0,2 мс) SELECT listings. * ОТ listings ГДЕ listings. id = 10 ПРЕДЕЛ 1 Нагрузка на велосипед (0,2 мс) ВЫБРАТЬ bikes. * ОТ bikes ГДЕ bikes. id = 10 ПРЕДЕЛ 1 Выполнено 400 неверных запросов за 4 мс (ActiveRecord: 0,8 мс)

ActionController :: ParameterMissing (параметр отсутствует или значение пусто: фотография):

app / controllers / photos_controller.rb: 36: в photo_params' app/controllers/photos_controller.rb:15:in create ' Отрисовка /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb в рамках rescues / layout Рендеринг /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_source.html.erb Оказано /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (4.5ms) Рендеринг /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb Предоставлено /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.1ms) Рендеринг /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb Предоставлено /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1,3 мс) Предоставлено /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb в пределах rescues / layout (108.1ms)

А вот схема моей таблицы:

create_table "photos", force: :cascade, options: "ENGINE=InnoDB DEFAULT 
CHARSET=utf8" do |t|
    t.integer  "bike_id"
    t.datetime "created_at",              null: false
    t.datetime "updated_at",              null: false
    t.string   "attachment_file_name"
    t.string   "attachment_content_type"
    t.integer  "attachment_file_size"
    t.datetime "attachment_updated_at"
    t.string   "legend"
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...