ruby-on-rails - ActionController::ParameterMissing(参数丢失或值为空)
问题描述
我的一种表格有问题。
<%= 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
还有我的相关日志:
在 2018-09-06 09:32:13 +0200 由 PhotosController#create 作为 HTML 参数处理 127.0.0.1 开始 POST "/listings/10/bikes/10/photos": {"utf8"=>"✓", "authenticity_token"=>"MV4dOYOFinOZsJjr+LlFRMIsDtQyPOxmlaV6PhEUZ1I+l5QS/bvwBRWc/EXLuw59F/B1Rgt6/5r79+bCiq3h6w==", "commit"=>"Enregistrer", "listing_id"=>"10", "bike_id"=>"10 "} 用户负载 (0.3ms) SELECT
users
.* FROMusers
WHEREusers
。id
= 3 订购方式users
。id
ASC LIMIT 1 列表加载 (0.2ms) SELECTlistings
.* FROMlistings
WHERElistings
。id
= 10 LIMIT 1 Bike Load (0.2ms) SELECTbikes
.* FROMbikes
WHEREbikes
。id
ActionController::ParameterMissing(参数丢失或值为空:照片):
应用程序/控制器/photos_controller.rb:36:in
photo_params' app/controllers/photos_controller.rb:15:in
在救援/布局中创建'渲染/Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb 渲染/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.3ms) 渲染 /Users/virginie/.rvm/gems/ruby-2.3.4/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.html。救援/布局中的 erb (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
解决方案
推荐阅读
- javascript - Javascript 检查是否在浏览器中阻止跟踪以及如何使用 javascript 启用它?
- reactjs - 在 react-canvas-draw 中绘制到图像库 64
- javascript - 调用 cookies.set 时出错(对象详细信息,可选函数回调):参数“详细信息”处出错:意外属性:“会话”
- sql - 原因:liquibase.exception.DatabaseException:错误:列“id”属于 bigint 类型,但表达式属于 text 类型
- java - “DAY_OF_WEEK”的第“1”天与星期一不一致
- android - Moshi 无法识别 ArrayList 数据类“com.squareup.moshi.JsonDataException:应为 BEGIN_OBJECT 但在路径 $ 处为 BEGIN_ARRAY”
- java - 编码蝙蝠预热问题 Java “如果给定的字符串包含 1 到 3 个 'e' 字符,则返回 true。”
- r - 将特定格式的因子日期转换为所需格式并减去它们
- java - 如何在java中使用waterMarkImage显示表格的边框
- javascript - 谁能帮我这个模板在我的文本框中得到奇怪的值