2013-11-18 5 views
0

Я работаю над самообучающимся проектом по изучению Rails, который можно найти на github here. (Последняя включает в себя обязательство эту ошибку)Полиморфная ассоциация испортилась?

Однако я вывешиваю здесь все коды:

Модель: photo_post.rb

class PhotoPost < ActiveRecord::Base 
belongs_to :user 
has_attached_file :image, styles: { 
post: "200x200>" 
} 
end 

Контроллер: PostsController

class PostsController < ApplicationController 
def show 
    @post = Post.find(params[:id]) 
end 
end 

Контроллер: PhotoPostsController

class PhotoPostsController < ApplicationController 
def create 
content = build_content 
post = current_user.posts.build(content: content) 
    if post.save 
     redirect_to root_path 
    else 
     flash.alert = "Please enter a title" 
     redirect_to root_path 
    end 
end 

private 

def build_content 
    PhotoPost.new(photo_post_parameters) 
end 

def photo_post_parameters 
    params.require(:photo_post).permit(:image) 
end 
end 

_post.html.erb

<%= div_for post do %> 
<%= link_to post.user.username, post.user %> 
suggested 
<%= render post.content %> 
<%= link_to time_ago_in_words(post.created_at), post %> 

home_controller.rb

class HomeController < ApplicationController 
protect_from_forgery 

def show 
    @title_post = TitlePost.new 
    @photo_post = PhotoPost.new 
    @posts = current_user.posts 
end 
end 

Я создал три модели. Сообщения являются основными, а TitlePosts и PhotoPosts - это модели под Почтой. Титульные записи работают нормально, так как я могу представить заголовок. Для фотографий я использовал paperclip. Однако я пытаюсь загрузить изображение я получаю следующее сообщение об ошибке:

'nil' is not an ActiveModel-compatible object that returns a valid partial path. 

Вы также можете проверить ошибку на ImageShack here (Скриншот с better_errors).. Я собирался скопировать соответствующие коды и файлы, но полный проект можно найти на github по ссылке, которую я предоставил. Если вам нужна дополнительная информация, пожалуйста, спросите меня.

спасибо. Любая помощь очень ценится.

+0

Пожалуйста, разместите код в своем вопросе, а не ссылки. Никто не успевает прочитать всю базу исходного кода, а внешние ресурсы могут измениться, что означает, что этот вопрос, в отдельности, не имеет смысла. – tadman

+0

@tadman Вижу, вы абсолютно правы. Я полностью отредактирую это и сделаю нужным. Спасибо –

+0

Это намного лучше. Вопросы о переполнении стека долго сохраняются в качестве ресурса для других, у которых есть те же проблемы. Это очень помогает. – tadman

ответ

1

ОК это кажется странным (для меня). Ошибка была вызвана забыванием установить ImageMagick.

После установки все работает нормально.

+0

Рад, что вы нашли свое решение. –

1

Только что нажатие на страницу current_user не определено, поэтому current_user.posts пытается получить сообщения на объекте Nil.

Это прояснилось ошибку, хотя она не собирается исправлять ваши вопросы:

HomeController ~ линия 7

@posts = [] 
if current_user 
    @posts = current_user.posts 
end 

Вы также можете добавить что-то к контроллеру, чтобы требовать аутентификации так что current_user установлен:

before_filter :authenticate_user! 
+0

Я вошел в систему, и эта проблема все еще существует. Также, когда я отлаживаю, current_user не пуст. –

+0

Мне также нужно было переместить devise_for перед ресурсами: пользователи или я получал: не удалось найти пользователя с id = sign_up –

+0

, так что это работает на вас? Я получаю ту же ошибку. Я сделал то, что вы предложили –

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