我使用paperclip gem允许用户上传图片并将其关联到产品,一切正常,现在我也想让我选择保存在app / assets / images中的现有图片。 ..实际上我在产品控制器中有这个:
private
# Use callbacks to share common setup or constraints between actions.
def set_product
@product = Product.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def product_params
params.require(:product).permit(:name, :price, :amount, :volume, :user, :avatar)
end
端
这在产品型号中:
class Product < ActiveRecord::Base
has_attached_file :avatar,
validates_attachment_content_type :avatar, :content_type
=> /\Aimage\/.*\Z/
end
以新/编辑形式:
<%= form_for(@product) do |f| %>
<% if @product.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@product.errors.count, "error") %> prohibited this
product from being saved:</h2>
<ul>
<% @product.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :price %><br>
<%= f.text_field :price, :value => (number_to_currency(f.object.price,
:precision => 2) || 0) %>
</div>
<div class="field">
<%= f.label :amount %><br>
<%= f.text_field :amount, :value =>
(number_with_delimiter(f.object.amount, :precision => 2 || 0)) %>
</div>
<div class="field">
<%= f.label :volume %><br>
<%= f.text_field :volume, :value =>
(number_with_delimiter(f.object.volume, :precision => 2 || 0)) %>
</div>
<div class="field">
<%= f.label :choose_a_logo %>
???
<%= f.label :or_upload_your_image %>
<%= f.file_field :avatar %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
有人可以帮帮我吗?非常感谢!
答案 0 :(得分:1)
添加&#34; simple_form&#34;和 &#34;回形针&#34;宝石到你的宝石文件 跑
ViewController
现在运行这两个命令
ViewController -> () -> ViewController
或者为了与bootstrap运行集成
USING PERIODIC COMMIT
LOAD CSV FROM 'file:/home/kanion/studia/bazy/clean.csv' AS line
CREATE (:Publikacja { author: line[0], title: line[1]})
下一步运行
$ bundle install
modelname 应替换为您要与之关联的型号名称 xyz 应该被名称替换,用户应该称之为最常见的约定是&#39; image&#39;但在你的情况下它的化身
$ rails g simple_form:install
下一步转到app - &gt;模特 - &gt; modelname.rb(您希望图像与上述相同的特定模型) 在&lt;%end%&gt;之前复制此内容在文件中 ............
has_attached_file:头像,风格:{中:&#34; 320x240&gt;&#34;}
$ rails g simple_form:install --bootstarp
$ rails g paperclip modelname xyz
................
更新您的表单新(&#34;您想要提供上传选项&#34;) 示例(&lt;%= f.input:name%&gt;)
$ rake db:migrate
更新您的表单显示 摆脱这整件事 .......................
validates_attachment :avatar, presence: true
....................... 替换为
,content_type: {content_type: ['avatar/jpg','avatar/jpeg']}
......... 所有设置但这只有在安装了图像magik时才有效... 通过在终端中运行以下命令来检查它
<%= f.input :avatar, label: "bla bla" %>
如果以
返回<div class="field">
<%= f.label :choose_a_logo %>
???
<%= f.label :or_upload_your_image %>
<%= f.file_field :avatar %>
</div>
或
<%= image_tag @modelname.avatar (:medium)%>
恭喜,但如果不是先安装图像魔术
答案 1 :(得分:0)
Paperclip用于将图像从本地计算机加载到rails应用程序。
如果rails应用程序位于本地计算机上,您应该能够导航到app/assets/images
并将其上传到特定对象。
如果要在服务器上提供此功能,则必须构建一个单独的屏幕以填充app/assets/images
文件夹中的所有图像,并添加链接以使用这些图像。
第二种选择是发展繁重的任务;在尝试构建之前确保它正是您想要的。