2017-02-17 3 views
0

В настоящее время я изучаю рельсы и сталкиваюсь с проблемой при попытке добавить комментарий. Если пользователь A комментирует сообщение пользователя B, комментарий будет отображаться под всеми сообщениями пользователя A, а не под конкретным сообщением пользователя B.ROR: Добавление комментариев к вопросу выпуска

Я думаю, что проблема связана с этой страницей, а не с комментарием сохраняются в базе данных.

comment.rb

class Comment < ApplicationRecord 
belongs_to :user 
belongs_to :pin 
end 

comments.controller.rb

class CommentsController < ApplicationController 

before_action :set_pin 

def create 
    @comment = @pin.user.comments.build(comment_params) 
    @comment.user_id = current_user.id 

    if @comment.save 
    redirect_to root_path 
    else 
     render root_path 
    end 
end 

private 

def comment_params 
    params.require(:comment).permit(:content) 
end 

def set_pin 
    @pin = Pin.find(params[:pin_id]) 
end 
end 

index.html.erb

- if pin.user.comments 
        - pin.user.comments.each do |comment| 
         .commentContainer 
          %h4.desc 
           %strong 
            =link_to (pin.user.Username), user_path(pin.user_id) 
           = comment.content 

Любой идеи о том, как это исправить?

EDIT.

Комментарии таблице:

0|id|INTEGER|1||1 
1|user_id|integer|0||0 
2|pin_id|integer|0||0 
3|content|text|0||0 
4|created_at|datetime|1||0 
5|updated_at|datetime|1||0 

sqlite> select * from comments; 
1|15||Nice shot!|2017-02-07 16:13:06.707372|2017-02-07 16:13:06.707372 
2|15||Cool pic|2017-02-07 16:25:27.780830|2017-02-07 16:25:27.780830 
3|14||test|2017-02-08 14:08:17.397782|2017-02-08 14:08:17.397782 

ответ

0

Я считаю, что вы правы, вопрос только, как вы их отображения.

Вы хотите удалить пользователя из отображения комментариев. То, что вы хотите сделать, это показать список комментариев, принадлежащих контакту, а затем просто получить доступ к данным пользователя через это.

- if pin.comments 
    - pin.comments.each do |comment| 
     .commentContainer 
     %h4.desc 
     %strong 
     =link_to (comment.user.Username),user_path(comment.user.user_id) 
     = comment.content 

Линия

- pin.comments.each do |comment| 

Покажет все комментарии, относящиеся к этому штифтом, независимо от пользователя. Затем вы получаете доступ к данным пользователя через свои отношения с комментарием внутри.

(comment.user.Username) 

Также убедитесь, что все отношения идут в обоих направлениях.

Pin.rb

has_many :comments 

User.rb

has_many :comments 
+0

Когда я пытаюсь что я получаю неопределенную ошибку метода: метод неопределенных комментарии для # Еще одна ошибка новичка, но я не Не знаю, что вызывает ошибку. Почему это работает, когда я помещаю 'pin.user.comments', но не тогда, когда я добавляю' pin.comments'? – BigL

+0

Можете ли вы проверить, что идентификатор контакта сохраняется, когда вы сохраняете комментарий? Как есть данные в столбце db? –

+0

Да, я отредактирую исходный вопрос, чтобы показать это – BigL