【问题标题】:Rails form file upload newbie issueRails 表单文件上传新手问题
【发布时间】:2013-03-31 14:39:57
【问题描述】:

我在检索文件上传信息时遇到问题。我刚开始学习 Rails。

我正在使用 ruby​​ 2.0.0p0 和 Rails 4.0.0.beta1

这是我的表格:

<%= form_for(@person, :html => { :multipart => true }) do |f| %>
<div class="field">
  <%= f.label :photo %><br />
  <%= f.file_field :photo %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

在我的 person.rb 模型中:

def photo=(file_data)
logger.debug("PHOTO")
logger.debug(file_data)
logger.debug("END OUTPUT PHOTO")
unless file_data.blank?
  @file_data = file_data
  self.extension = file_data.original_filename.split('.').last.downcase
end
end

我可以在控制台中看到没有任何反应(没有“PHOTO”输出),永远不会调用 photo 方法。 这是为什么呢?

当我查看控制台时,我还看到了让我担心的这一行:

Unpermitted parameters: photo

这是什么意思?

【问题讨论】:

  • 如果你刚开始学习 Rails,我不会在 Rails 4 beta 正式发布之前使用它。您遇到的确切问题可能不会在 Rails 3.2 中发生。
  • 你是对的。我想我在安装 Rails 时没有注意。我会尝试切换回 3(无论如何我的学习书都是为 Rails 3 准备的)

标签: ruby-on-rails forms ruby-on-rails-4


【解决方案1】:

在您处理params 的控制器中,您需要使用.permit 列出允许表单发布的属性:

@person = Person.new(params.require(:person).permit(:photo))

或者,如果您使用 Rails 的脚手架生成器,则可能有一个 person_params 方法,您需要在其中添加 :photo 属性:

def person_params
  params.require(:person).permit(:photo, :name, etc...)
end

【讨论】:

  • 是的,找到了。很有意义。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
相关资源
最近更新 更多