2013-04-23 3 views
0

В настоящее время у меня есть приложение, которое позволяет пользователям комментировать запись в блоге, называемую «работа». Вот модель отношений:Значение объекта Rails не отображается на странице просмотра. Нет ошибок

class User < ActiveRecord::Base 
    has_many :works 
    has_many :comments 

class Work < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 


class Comment < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :post 
    belongs_to :work 

Там есть форма на заводе показать страницу, которая позволяет пользователям размещать комментарий:

<%= form_for([@work, @comment]) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_area :content, placeholder: "Post feedback or contribute content 
    to this work!" %> 
    </div> 
    <%= f.submit "Post", class: "btn btn-small btn-primary" %> 
<% end %> 

Поскольку форма комментария находится на странице Works, контроллер Works имеет следующая логика построения для комментария:

def show 
    @work = Work.find(params[:id]) 
    @comment = @work.comments.build 
    @comment.user = current_user 
    @activities = PublicActivity::Activity.order("created_at DESC").where(trackable_type: "Work", trackable_id: @work).all 
    @comments = @work.comments.order("created_at DESC").where(work_id: @work).all 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @work } 
    end 
    end 

контроллер Комментариев затем создает комментарий:

def create 
    @work = Work.find(params[:work_id]) 
    @comment = @work.comments.build(params[:comment]) 
    @comment.user = current_user 
    if @comment.save 
     #flash[:success] = "Post created!" 
     redirect_to @work 
    else 
     render 'home#index' 
    end 
    end 

Моя проблема заключается в том, что на странице «Работы» будет отображаться имя пользователя, отправившего комментарий, но по какой-то причине оно не отображает значение поля «контент», даже если в базе данных есть значение содержимого ! У меня нет сообщений об ошибках. Я просто получаю пустой ящик, где должен быть текст содержания.

Вот Работы показывают страницу, которая отображает содержимое (минус HTML форматирования):

<% @comments.each do |comment| %> 
<%= image_tag @comment.user.photo.url(:avatar) %> <%= link_to @comment.user.full_name, @comment.user if @comment.user %> 
<%= @comment.content %> 
<% end %> 

Если я заменяю @ comment.content что-то вроде @ comment.work_id, я получить номер " 1 "для отображения на веб-странице. Как я уже упоминал ранее, действительно существует допустимое значение для контента, хранящегося в базе данных. Почему он не будет отображаться? Почему нет ошибки?

Спасибо!

ответ

1

В вашем представлении кода, вы итерация @comments и хранение каждого один, как comment (примечание отсутствие @) - то в цикле вы имеете в виду @comment что, вероятно, что-то совсем другое.

Изменить @comment будет comment.

+0

Хороший лорд. Это все, что мне нужно было сделать ?! Еще раз спасибо семь! Мне действительно нужно перестать работать над этим так поздно ночью: D. – winston