我是铁杆新手。我试图上传附加到名称的图像。表单位于视图名称index
中,并且有一个名为show
的视图的链接,该视图将显示添加名称时上传的名称和图像。控制器为pages
。
我从一个基本表单开始,它可以在name
模型中添加Users
字段。问题是当我使用回形针上传图像同时将名称推入数据库时,图像没有显示在show
中,而是一个破损的图像链接。让我解释一下我是如何做到的。
我安装了回形针。
按Users
然后rails g paperclip users image
将新列添加到rake db:migrate
模型,新列现在位于Users
。
接下来,我按<%= f.file_field :image %>
在表单中创建一个file_field,并将has_attached_file :image
添加到Users
模型。
在view
内,我创建了一个数据库循环,用<%= image_tag t.image.url %>
打印出名称和图像
显示的是名称,但图像不是,它丢失了。这是代码:
索引视图:
<a href="show">To SHOW</a><br>
<%= form_for @add, :url => { :action => "them"}, :html => { :multipart => true} do |f| %>
Name: <%= f.text_field :name %><br>
Photo: <%= f.file_field :image %><br>
<%= f.submit "Add" %>
<% end %>
节目视图:
<% @everything.each do |t| %>
<%= t.name %>
<%= image_tag t.image.url %>
<br><br><br>
<% end %>
控制器:
class PagesController < ApplicationController
def index
@add = Users.new
end
def them
Users.create :name => params[:users][:name]
redirect_to :action => "index"
end
def show
@everything = Users.all
end
end
users.rb型号:
class Users < ActiveRecord::Base
attr_accessible :name
has_attached_file :image
end
routes.rb中:
get "pages/index"
match "pages/them" => "pages#them", :via => :post
get "pages/show"
我使用SQLite Expert Personal检查数据库,名称在那里,但所有image_列(image_file_name
,image_content_type
,image_file_size
,image_update_at
)都只是空。
我是否错过了让它发挥作用的东西?随意询问更多信息。谢谢。
答案 0 :(得分:0)
试试这个
Users.create({:name => params[:users][:name], :image => params[:users][:image] })
遵循rails模型声明和命名约定。
用户模型应命名为User。它将在数据库迁移后创建一个用户表。
关注link
答案 1 :(得分:0)
在Debadatt的帮助下,我找到了解决方案,安装imagemagick
然后应用Users.create({:name => params[:users][:name], :image => params[:users][:image] })
,因为Debadatt建议会这样做。
如果出现Paperclip::Errors::NotIdentifiedByImageMagickError:
之类的错误,只需将gem "cocaine", "= 0.3.2"
添加到gemfile和bundle install
,然后下载或更新所需的cocaine
。
答案 2 :(得分:0)
如果您使用设计进行身份验证 - 则需要转到application.rb文件并添加:https://github.com/plataformatec/devise
Install failed. Rolling back...
Install-Package : 'MvvmCross.HotTuna.CrossCore' already has a dependency defined for 'MvvmCross.HotTuna.Binding'.
At line:1 char:1
+ Install-Package Xamarin.GooglePlayServices.Base -Pre
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand