gpt4 book ai didi

ruby-on-rails - rails : Image upload (WIthout plugin's)

转载 作者:行者123 更新时间:2023-12-02 02:09:47 24 4
gpt4 key购买 nike

我有一张表,用于存储有关酱料的信息。每个 sauce 在 images assets 文件夹中都有一个图像,在一个名为 sauces 的文件夹中。所有酱汁文件都命名相同;例如 assets/images/sauces/sauces_piri.png

我想做的基本上就是以创建发生的形式上传一个 .png 文件,在 pic_url 的字段中,图像的名称与酱汁一起存储/所以当我想要时它被正确定向显示图像。

目前管理员必须使用域文件管理将图像物理上传到正确的位置,并在创建新酱汁时输入“sauces/sauces_name.png”。

添加新酱的表单:

<%= error_messages_for(@sauce) %>
<table summary="Sauces Form Fields">
<tr>
<th><%= f.label(:name,"Sauce Name") %></th>
<td><%= f.text_field(:name) %></td>
</tr>
<tr>
<th><%= f.label(:description, "Description") %></th>
<td><%= f.text_area(:description, :size => '40x5') %></td>
</tr>
<tr>
<th><%= f.label(:heat_level, "Heat Level") %></th>
<td><%= f.select(:heat_level,{ 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5"}) %></td>
</tr>
<tr>
<th><%= f.label(:pic_url, "Picture URL") %></th>
<td><%= f.text_field(:pic_url) %></td>
</tr>
<tr>
<th><%= f.label(:title_colour, "Title Colour") %></th>
<td><%= f.text_field(:title_colour) %></td>
</tr>
<tr>
<th><%= f.label(:description_colour, "Desc Colour") %></th>
<td><%= f.text_field(:description_colour) %></td>
</tr>
</table>

因此,如果不使用回形针等插件,我如何启用图像上传,然后将文件存储在正确的位置,并在表字段 pic_url 文件夹名/文件名.png 中存储了吗?

最佳答案

我不清楚你有什么问题。因此,我将发布一个关于上传文件的示例表单。

<%= form_for(:uploaded_data_file, :url => upload_files_path(:params => params) ,  :remote => true, :html => { :multipart => true } ) do |f| %>
<%= f.label "Upload" %><br />
<%= f.file_field :location %>
<% end %>

您必须为将存储图像的函数定义路径,在此示例中它称为 upload_files_path 并且我们将所有 params 传递给它。然后重新启动 webapp 以获取新路由。

在 Controller 中,您可以保存文件及其详细信息

获取文件名

params[:uploaded_data_file][:location].original_filename

获取文件本身并保存

File.open("where/to/save", "wb") { |f| f.write(params[:uploaded_data_file][:location].read) }

为了确保它是一个 .png,你可以做一些正则表达式检查

if(name =~ /.png$/i) # for more than one type do (name =~ /.jpeg$|.png$/i)

要执行其他操作,请查看您的 params 并进行所需的更改。

上类路线你可以看http://edgeguides.rubyonrails.org/routing.html#adding-more-restful-actions

resources :posts do
collection do
get :upload_files # will create upload_files_posts_path
end
end

或者

match '/upload_files', :to => 'controller_name#method_name' # 'posts#upload_files'

或者

<% form_tag({:action => 'upload_file'}  #will use the correct controller based on the form

关于ruby-on-rails - rails : Image upload (WIthout plugin's),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com