2013-05-31 3 views
0

В настоящее время я создаю блог с использованием рельсов, где я хочу добавлять комментарии к модели публикации. Я использую act_as_commentable, его работы отлично работают на консоли rails, но когда я пытаюсь реализовать его в MVC, я запутался !! как я могу добавлять комментарии к модели Post.Добавление комментариев к конкретной модели в рельсах?

Что мне делать? нужно ли создавать новый контроллер для комментариев с комментариями?

Я хочу добавить форму комментария к нижепоставленному представлению, чтобы пользователь мог добавлять комментарии к сообщениям # show page.

Извините за мой английский!

ответ

2

с acts_as_commentable, как было предложено Пауло или polymorphic-association

http://asciicasts.com/episodes/154-polymorphic-association

или PRO счет на Railscasts: http://railscasts.com/episodes/154-polymorphic-association-revised (РЕПО: https://github.com/railscasts/154-polymorphic-association-revised/tree/master/blog-after)

немного измененный код ниже, этот код позволит вам добавлять комментарии до Post только при загрузке @commentable с @commentable = Post.find(params[:id]), если вы пройдете учебное пособие, вы сможете добавлять комментарии к любым другим моделям приложения, в которых пользователь и почта могут совместно использовать тот же Commen t модель.

Я использовал acts_as_commentable в моем приложении раньше, хороший драгоценный камень, но я использую polymorphic-association теперь вызывают его гораздо более настраиваемое.

post.rb

attr_accessible :content, :name 
    has_many :comments, as: :commentable 

comment.rb

attr_accessible :content 
    belongs_to :commentable, polymorphic: true 

show.html.erb

<h1>Comments</h1> 

<ul id="comments"> 
    <% @comments.each do |comment| %> 
    <li><%= comment.content %></li> 
    <% end %> 
</ul> 

<h2>New Comment</h2> 
<%= form_for [@commentable, @comment] do |f| %> 
    <ol class="formList"> 
    <li> 
     <%= f.label :content %> 
     <%= f.text_area :content, :rows => 5 %> 
    </li> 
    <li><%= f.submit "Add comment" %></li> 
    </ol> 
<% end %> 

posts_controller

def show 
    @post = Post.find(params[:id]) 
    @commentable = @post 
    @comments = @commentable.comments 
    @comment = Comment.new 
end 

comments_controller

def create 
    @commentable = Post.find(params[:id]) 
    @comment = @commentable.comments.new(params[:comment]) 
    if @comment.save 
     redirect_to @commentable, notice: "Comment created." 
    else 
     render :new 
    end 
    end 

маршруты.гь

resources :posts do 
    resources :comments 
    end 
+0

Какие изменения должны быть в файле route.config для comments_controller –

+0

Я обновил весь ответ, а не только маршруты – rmagnum2002

+2

+1 @AkashShinde: Вот пример приложения для [154-polymorphic-association-revision] (https: // github. ком/Railscasts/154-полиморфный-ассоциации-доработанное/дерево/мастер/блог-после). Но если вы хотите использовать 'act_as_commentable' здесь базовую систему [commenting system - actions_as_commentable] (http://www.arailsdemo.com/posts/16) –

1

Как вы можете увидеть в документации acts_as_commentable,

Кроме того, убедитесь у вас есть миграции создать структуру базы данных.

В модели:

class Post < ActiveRecord::Base 
    acts_as_commentable 
end 

К вашему комментарию я вижу, что вы даете первые шаги на Rails. Вам нужно создать контроллер и представления. В контроллере вам нужно будет инициализировать переменные и вызвать уважающее представление. Мой лучший совет для вас, прежде чем начинать свой собственный блог, взгляните на this Rails tutorial, который покроет большинство аспектов, которые вам понадобятся.

+0

да я добавил этот метод моей модели, его работа через рельсы консоль отлично я могу прокомментировать на этот пост через консоль успешно, но я хочу, чтобы добавить комментарий к этой конкретной должности по форме сообщения # show.is необходимо создать новый контроллер или что другое? –

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