【发布时间】:2014-07-13 19:08:28
【问题描述】:
编辑: 正如@Justin 所说,我可能在试图找到解决方案时搞砸了,甚至没有意识到,哎呀...将参数更改为 params.require(:pin).permit( :image, :description) 确实解决了。
虽然它现在不起作用,因为我得到一个“具有与其内容不匹配的扩展名。
我正在关注 Rails 一个月,并试图将上传图像放入脚手架工作。 我正在使用回形针文件和 simple_form。这是我认为相关的代码(请随意询问):
_pin_form.erb.html
<%= simple_form_for(@pin, :html => {:multipart => true}) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.file_field :image, :label => "Upload an image" %>
<%= f.input :description, as: :text %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
pin.rb
class Pin < ActiveRecord::Base
has_attached_file :image
belongs_to :user
validates :description, :presence => true
validates :user_id, :presence => true
validates_attachment :image, :presence => true
# Validate content type
validates_attachment_content_type :image, :content_type => /\Aimage/
# Validate filename
validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/]
# Explicitly do not validate
do_not_validate_attachment_file_type :image
end
pin_params 来自 pins_controller.rb
def pin_params
params.permit(:description, :image)
end
(其中大部分是当我尝试通过回形针自述文件进行故障排除时)。 每当我上传文件时,我都会收到一条错误消息
ActionController::ParameterMissing in PinsController#create
param not found: image
如果我尝试在某些东西上使用 params.require,我会收到一条错误消息,提示找不到参数。
我不知道是什么原因造成的。如果我删除 pin_params 方法,表单字段只会返回“不能为空白”,无论其中有什么”
这看起来很简单,但我就是找不到解决方案
【问题讨论】:
-
使用
params.require(:pin).permit(:description, :image)时出现错误?同样使用 simple_form,您只需指定f.input :image, label: "Upload an image" -
你应该用强大的参数来计算,因为我猜图像不仅仅是一个属性,它是一个数组。 stackoverflow.com/questions/19664744/…
-
能否请您显示从视图进入控制器的参数。
-
@Zishe,如果他在他的
pins表上正确设置了他的迁移以用于回形针,他不应该在他的参数中指定。 -
您的模型有 3 个验证器用于
image。通常,您应该只拥有其中之一 - 验证内容类型、文件类型或您不想进行任何验证的状态。您的新错误来自内容类型验证器 - 您的操作系统是什么?
标签: ruby-on-rails ruby-on-rails-4