Ruby on rails 通过模型中的Carrierwave获取文件名
我希望能够了解如何检索提交的文件名,以便将文件读入临时变量并对其进行处理 我一直在尝试将carrierwave的gem整合到一个项目中,这个项目涉及文本解析和格式化。我的代码用于输入,该输入被复制到我制作的文本字段中,但似乎无法合并作为文件提交的文本。Ruby on rails 通过模型中的Carrierwave获取文件名,ruby-on-rails,ruby,Ruby On Rails,Ruby,我希望能够了解如何检索提交的文件名,以便将文件读入临时变量并对其进行处理 我一直在尝试将carrierwave的gem整合到一个项目中,这个项目涉及文本解析和格式化。我的代码用于输入,该输入被复制到我制作的文本字段中,但似乎无法合并作为文件提交的文本。 我的模型的相关部分如下所示: class JDatum < ActiveRecord::Base mount_uploader :text, TextUploader after_validation :setoutput priv
我的模型的相关部分如下所示:
class JDatum < ActiveRecord::Base
mount_uploader :text, TextUploader
after_validation :setoutput
private
def setoutput
if self.jInput.size == 0
dir = self.text.file.filename
contents = dir.to_s.read
parsed = JSON.parse(contents)
self.jOutput = init_parse(parsed)
else parsed = JSON.parse(self.jInput)
self.jOutput = init_parse(parsed)
end
end
类JDatum<p>
<center><h1 style = "color:#000">Formatted Output</h1></center>
<strong style = "color:#333"><%= simple_format(@j_datum.jOutput) %></strong>
</p>
<%= link_to 'Edit', edit_j_datum_path(@j_datum) %> |
<%= link_to 'Back', j_data_path %>
格式化输出
|
这里是完成输入的视图,其中f.file_字段:text是表单上的上载按钮
<%= form_for @j_datum do |f| %>
<% if @j_datum.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@j_datum.errors.count, "error") %> prohibited this j_datum from being saved:</h2>
<ul>
<% @j_datum.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<center><div class="field">
<%= f.label :jInput %><br>
<%= f.text_area :jInput ,:cols => 100, :rows => 25%>
</div></center>
<p>
<%= f.file_field :text %>
</p>
<center><div class="actions">
<%= f.submit %>
</div></center>
<% end %>
禁止保存此j_数据:
100,:行=>25%>
在您的表格中添加以下内容:
:html => { :multipart => true }
例如:
<%= form_for @j_datum, :html => { :multipart => true } do |f| %>
{:multipart=>true}do | f |%>
您是否可以共享试图上载文本文件的视图?“你的问题似乎让人困惑。”科蒂斯说。我编辑了这个问题,包括视图。希望能有帮助。我添加了这一点并重新运行了服务器,但它仍然在这一行“dir=self.text.file.filename”上给了我一个错误。我确实注意到,奇怪的是,即使我调用text.file.filename,它在JDataController#为nil:NilClass创建和未定义的方法'filename'中也会显示NoMethodError。所以我不明白的是为什么它试图通过我的控制器而不是上传器模型来访问filename方法?Setoutput是一种事后验证,在创建/更新模型记录时,将调用它。是的,这是我选择文件,然后单击“提交”按钮后显示的内容。