我正在使用rails_admin进行管理面板.只需更改图像模型中的关联
由此
class Image < ApplicationRecord
belongs_to :user
belongs_to :product
end
Run Code Online (Sandbox Code Playgroud)
对此
class Image < ApplicationRecord
has_one :user
has_one :product
end
Run Code Online (Sandbox Code Playgroud)
和用户模型是
class User < ApplicationRecord
has_many :images,dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)
当我尝试从管理面板编辑用户时出现此错误.从另一方面它工作正常.
ActiveRecord::StatementInvalid at /user/72/edit
PG::UndefinedColumn: ERROR: column users.image_id does not exist
LINE 1: SELECT "users".* FROM "users" WHERE "users"."image_id" = $1...
^
: SELECT "users".* FROM "users" WHERE "users"."image_id" = $1 LIMIT $2
Run Code Online (Sandbox Code Playgroud) ruby-on-rails rails-admin rails-activerecord ruby-on-rails-5
我使用的rails 5.2,bootstrap-4,bootstrap_form与active-storage文件被成功上传.我想要的是当我在表格中输入公司名称然后它应该检查company_logo.
我尝试使用它,当我在表单中包含错误循环时它工作正常在这里视图
- if @company.errors.any?
#error_explanation
%ul
- @company.errors.full_messages.each do |message|
%li= message
Run Code Online (Sandbox Code Playgroud)
型号代码
has_one_attached :company_logo
validates :name, :company_logo,presence: true
after_validation :is_logo?, if: Proc.new { |a| a.name? }
def is_logo?
errors.add(:base, 'Please upload your company logo.') if !self.company_logo.attached?
end
Run Code Online (Sandbox Code Playgroud)
我有一个表单来添加图像 url表单,如果用户添加图像 url 我想下载图像并保存到本地磁盘(主页/文档/图像)
我创建图像模型和控制器..
需要帮助请
在图像模型中
class Image < ApplicationRecord
has_one_attached :image
require 'open-uri'
image = open('http://example.com/image.png')
IO.copy_stream(image, '~/home/Documents/Images/local_image.png')
end
Run Code Online (Sandbox Code Playgroud)
在图像控制器中
class ImagesController < ApplicationController
def index
@image = Image.new
end
end
Run Code Online (Sandbox Code Playgroud)
在图像/index.html.erb
<%= form_for(@image, url: images_path) do |f| %>
<%= f.text_field :image_url %>
<%=f.submit%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但得到错误
OpenURI::HTTPError in ImagesController#index 404 not found
Run Code Online (Sandbox Code Playgroud)