2016-11-30 1 views
0

Я просто новичок в рельсах, и я пытаюсь объединить функцию комментариев в своем приложении. Тем не менее я получаю теперь раздражаетКомментарии к проектам и пользователям

Couldn't find Project without an ID 

routes.rb

resources :projects do 
    resources :comments 
    end 

модели пользователя.

has_many :projects, dependent: :destroy 
    has_many :comments 

Модель проекта.

belong_to :user 
    has_many :comments , dependent: :destroy 

Комментарии модели.

belongs_to :user 
    belongs_to :project 

Комментарии контроллера.

class CommentsController < ApplicationController 
    before_action :logged_in_user, only: [:create, :destroy] 

def create 
    @project = Project.find(params[:project_id]) 
    @comment = @project.comments.build(comment_params) 
    @comment.user_id = current_user.id 
     if @comment.save 
     flash[:success] = "Comment created!" 
     redirect_to @project 
    else 
     flash.now[:danger] = "Sorry! your comment was not created" 
    end 
    end 


def destroy 
    end 

    private 

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

end 

Результат

Parameters: {"utf8"=>"✓", "authenticity_token"=>"+/UjIRKAjE+DAATW6eV48xjX+6WW6a/y7Q8DS+nLeCnM8nzwpdzW1FuGXtXVpCGFS0vPivvMi7jvus9IQcjLjA==", "comment"=>{"body"=>""}, "commit"=>"Comment"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 
Completed 404 Not Found in 24ms (ActiveRecord: 1.3ms) 



ActiveRecord::RecordNotFound (Couldn't find Project without an ID): 

---- Обновление 1 -------

<%= form_for(@comment) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_area :body, placeholder: "Write here" %> 
    </div> 
    <%= f.submit "comment", class: "btn btn-primary" %> 
<% end %> 

Любые идеи?

+0

Как вы видите в параметрах журнала [: project_id] не было отправлено (нет project_id в параметрах hash) – lightalloy

+0

У вас нет ': project_id' в ваших параметрах –

+0

, пожалуйста, напишите' form', который используется для создания комментария –

ответ

1

Я не знаю, что написано на вашем form_url. Но, определенно, отсутствует project_id. Итак, я предлагаю вам использовать следующий код:

<%= form_for [@project, @comment] do |f| %> 

Это будет создать запрос POST в root/projects/2/comments

+0

Спасибо за ваш ответ. Я дам вам позже и дам вам знать. – Eltorero1992

0

Спасибо всем за ваши посты ниже является правильным решением

<%= form_for ([@project , @comment]) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_area :body, placeholder: "Compose new micropost..." %> 
    </div> 
    <%= f.submit "Comment", class: "btn btn-primary" %> 
<% end %> 

Params

def comment_params 
    params.require(:comment).permit(:body,:project_id,:user_id) 
end 
Смежные вопросы