#ruby-on-rails #ruby #devise #paperclip
#ruby-on-rails #ruby #devise #скрепка
Вопрос:
У меня есть панель мониторинга, настроенная так, чтобы отображалась последняя загрузка current_user (помощник devise), однако отображается последняя загрузка независимо от того, кто является current_user.
контроллер панелей мониторинга:
class DashboardsController < ApplicationController
def index
@todo_lists = current_user.todo_lists
@paperclip_image = PaperclipImage.last
@paperclip_image.user = current_user
end
end
модель paperclip_image:
class PaperclipImage < ActiveRecord::Base
belongs_to :user
has_attached_file :asset, styles: {
medium: "300x300>",
small: "140x140>",
thumb: "60x64!"
}
validates_attachment_content_type :asset, :content_type => /Aimage/.*Z/
end
модель пользователя:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :todo_lists
has_many :todo_items
has_many :paperclip_images
end
dashboards index.html.erb
<div class="col-sm-6">
<h3> Latest Prototype </h3>
<%= link_to image_tag(@paperclip_image.asset.url(:medium), class: "img-thumbnail"), @paperclip_image.asset.url %>
<div class="col-sm-12">
<p class="paperclip-images-icons">
<%= link_to image_tag("edit.png", :alt => "Reupload Image", :title => "Reupload Image"), edit_paperclip_image_path(@paperclip_image) %>
<%= link_to image_tag("list.png", :alt => "See All Images", :title => "See All Images"), paperclip_images_path %>
</p>
</div>
</div>
установлены драгоценные камни:
gem 'rails', '4.1.0'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
gem 'paperclip', '~> 4.1'
gem 'devise'
Спасибо!
Ответ №1:
Это потому, что вы получаете самое последнее изображение скрепки с
@paperclip_image = PaperclipImage.last
и с вашей строкой
@paperclip_image.user = current_user
Вы говорите, что с последним PaperclipImage
я хочу назначить его пользователя current_user. И это именно то, что произойдет, если вы добавите строку @paperclip_image.save!
Вам нужно будет найти последнее изображение текущего пользователя PaperclipImage
Что-то вроде:
@paperclip_image = current_user.paperclip_images.last
итак, все Index Action
должно выглядеть так:
def index
@todo_lists = current_user.todo_lists
@paperclip_image = current_user.paperclip_images.last
end
Комментарии:
1. Аааа — я делал это раньше, но получал сообщение об ошибке, но теперь, когда вы подтвердили это решение, я проверил еще раз, и, похоже, ошибка была связана с тем, что у пользователя не было никаких изображений, поэтому я действительно все сделал правильно, но просто нужно было исправить исключение. Большое вам спасибо!