2014-10-10 2 views
0

Я пытаюсь использовать paperclip, чтобы показать изображение пользователя в индексе сообщений, но все, что я получаю, является «отсутствующей» ссылкой на своем месте.Получение undefined ошибок «изображения» при использовании скрепки для загрузки изображения?

Я использую Devise для аутентификации. И скрепка для загрузки изображения. Это разочаровывает, поскольку он работает некоторое время для меня, но occaisonaly приносит мне неприятные ошибки, подобные этому. Спасибо за помощь, я застрял здесь пару дней.

Вот мой указательный сообщений: (ошибка выдается на 8-й линии)

<% @posts.each do |post| %> 
    <ul> 
    <li> 
    <div class="well well-large"> 
    <div class="media"> 
    <a class="pull-left" href="#"> 
    <%= image_tag current_user.image.url(:thumb) %> 
    </a> 
    <div class="media-body"> 
    <h4 class="media-heading"><%= post.title %></h4> 
     <%= post.content %> 

<!-- Nested media object --> 
     <div class="media"> 

     </div> 
    </div> 
    </div> 
</div> 
<% end %> 
    </li> 

class User < ActiveRecord::Base 
    has_many :posts 
    has_attached_file :image, :styles => { :thumb => "100x100>" }, 
      :default_url => "/images/:style/missing.png" 

validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/ 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
end 

post.rb

class Post < ActiveRecord::Base 
belongs_to :user 
end 

Вот мои post_params от моего контроллера сообщений :

private 

    def post_params 
    params.require(:post).permit(:title, :content) 
    end 

ответ

0

Это совершенно очевидно из-за ошибки, которую вы получаете. Посмотрите на строку:

<a class="pull-left" href="#"> 
    <%= image_tag current_user.image.url(:thumb) %> 
</a> 

Вот ваш current_user в nil, и, следовательно, вы получите:

неопределенный метод `образ» для ноль: NilClass

Это означает, что вы запрашивая этот метод и загружая это представление, когда пользователь не зарегистрирован, т.е. пользовательский сеанс не был выполнен. Пожалуйста, поместите чек в свой PostsController: before_filter :authenticate_user! или попробуйте войти, прежде чем вы получите доступ к методу индекса PostsController.

+0

Большое спасибо, я бы хотел, чтобы все так ответили, это помогло мне понять все на более глубоком уровне. Я больше не получаю сообщение об ошибке, но вместо показа изображения это просто «недостающее звено», и я обязательно загрузил изображение. –

+0

@joesmith: Я рад, что ваша проблема решена. Если ответ поможет вам, пожалуйста, примите его, нажав на галочку в левой части ответа, чтобы другие могли использовать ее для справки (если в будущем они попадут в одну и ту же проблему). Благодарю. – Surya

+0

Это только частично устраняло проблему, хотя скрепка все еще не работает. –

Смежные вопросы