Для моего приложения в настоящее время я перечисляю свои проекты, связанные с пользователем на странице пользователя. Для каждого перечисленного проекта я хочу сделать комментарии для каждого проекта. Я могу отправлять комментарии к каждому проекту в базу данных через форму, но не могу представить комментарии, связанные с комментариями. Ничего не дает. Я играю с user_controller, думая, что он там без успеха. Как это исправить?Rails - Почему мои комментарии не отображаются?
Я создал модели и контроллеры для пользователей, проектов и комментариев. Комментарии принадлежат проектам и проектам, принадлежащим Пользователям.
schema.rb
create_table "comments", :force => true do |t|
t.integer "user_id"
t.integer "project_id"
t.text "content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
user.rb
has_many :projects
has_many :comments
project.rb
has_many :comments
belongs_to :user
comment.rb
belongs_to :project
routes.rb
resources :users
resources :projects do
resources :comments
end
resources: comments
просмотр/пользователей/_projects.html.erb
<%= render @projects %>
users_controller.rb
def comments
@user = User.find(params[:id])
@projects = @user.projects.newest.page(params[:comments_page]).per_page(10)
@project = Project.new
@comments = Project.find(params[:id]).comments.newest.page(params[:comments_page]).per_page(2)
end
вид/проекты/_project.html.erb
<%= project.content %>
<%= render 'comments/form', project:project %>
<%= render @comments %>
<%= will_paginate @comments, :param_name => 'comments_page' %>
вид/комментарии/_comment.html.erb
<%= comment.content %>
http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association –
В routes.rb, я предполагаю, что вашего первого блока будет достаточно. В project.html.erb, что делает этот рендеринг, предположим? В users_controller вы определяете @project 2 раза один за другим ... который, похоже, не предназначен специально. – Raindal
Вы используете те же параметры [: id], чтобы найти своего пользователя и проект для @commemts. – Edward