如何阻止hidden_​​field将我的文件值转换为字符串?

时间:2014-10-15 14:15:24

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

所以我从我的parse.com数据库调试了这个值:

<%= debug @activity["image1"] %>

视图中的结果显示它是我期望的文件:

--- !ruby/object:Parse::File
parse_filename: tfss-1c325650-79d2-4d34-ab3b-c62397c7ac9a-image1.jpg
url: http://files.parsetfss.com/0b53rerr13f-42e5-be7ac9a-image1.jpg

我尝试将其添加为我的表单的值,如下所示:

<%= form_for :leads, :url => activities_create_path do |f| %>
<%= f.hidden_field :image, :value => @activity["image1"] %>
<% end %>

在我的控制器中,我尝试像这样保存:

def create
    @lead = Leads.new(params[:leads])
    if @lead.valid?
        lead = Parse::Object.new("Leads")

        lead["image"] = params[:leads][:image]

        lead.save
        redirect_to root_url
    end
end

我得到的错误告诉我它无法保存,因为它期待一个文件但是有一个字符串。

我知道该值是一个文件,但我怀疑hidden_​​fields值最终成为字符串。

  1. 有没有办法将hidden_​​field值转换为字符串?

  2. 如果问题1不可能,那么我可以创建一个file_field并设置它的值而无需手动上传图像文件吗?

  3. 我真正需要做的是从我的parse.com数据库中获取一个对象的默认图像文件,并将其完全按原样(一个文件)存储回parse.com中的另一个表。

    我遇到的问题是我的rails形式,其中文件被转换为字符串。 我的另一个选择是如何抓住同一个图像,该图像实际显示在页面顶部的表格中。

    这就是我在文件中显示图片的方式:

    <%= image_tag @activity["image1"].url, onerror:"this.style.display='none'" if @activity["image1"].present? %>
    

    然后一些如何使用该图像来模拟将文件添加到file_field。但是,我认为这有点复杂,而且我不想做什么。

    我有一个来自parse.com中的一个表的文件,我在rails中读取它,但现在想要获取该文件并对其执行任何操作,然后将其存储回parse.com但在另一个表中。但是正如我上面提到的,hidden_​​field将文件转换为字符串,但我需要它保持相同的格式。

    我希望这一切都有道理。

    非常感谢您的帮助。

    感谢您的时间。

1 个答案:

答案 0 :(得分:1)

Http参数和html字段值将始终像一个字符串。 尝试存储&#39; parse_filename&#39;的值。或者&#39; url&#39;来自隐藏字段中的Parse :: File。在操作方法中,您可以使用提交的路径读取文件。