В настоящее время я добавляю вложенные комментарии в свое приложение, каждый раз, когда я пытаюсь добавить комментарий, я получаю следующую ошибку Couldn't find Project without an ID
, так как мои маршруты не настроены должным образом.
Теперь я хотел бы чтобудет лучшим способом справиться с этим?
Могу ли я оставить свои маршруты таким образом и просто изменить @commentable
соответственно?
Мои маршруты
resources :projects do
resources :project_steps, path: "step", only: [:show, :update]
resources :tasks
resources :reviews, only: [:create, :destroy]
end
resources :tasks do
resources :comments, module: :tasks
end
Мой комментариймодель:
def comments
Comment.where(commentable: commentable, parent_id: id)
end
Мои задачи :: CommentsController
class Tasks::CommentsController < CommentsController
before_action :set_commentable
private
def set_commentable
@commentable = Task.friendly.find(params[:task_id])
# This doesn't work since it can't find a task without a project
end
end
Или я должен изменить маршруты на:
resources :projects do
resources :tasks do
resources :comments, module: :tasks
end
end
Но тогда я получаю следующую ошибку:Couldn't find path tasks_comments_path
, но тогда мне нужно было бы изменить свою форму соответственно:
<%= form_with model: [commentable, Comment.new], local: true, html: { class: local_assigns[:class], data: { target: local_assigns[:target] } } do |form| %>
<div class="form-group">
<%= form.text_area :body, placeholder: "Add a comment", class: "form-control" %>
</div>
<div class="form-group">
<%= form.hidden_field :parent_id, value: local_assigns[:parent_id] %>
<%= form.submit "Create Comment", class: "btn btn-primary btn-block" %>
</div>
<% end %>
Что-нибудь, что мне не хватает?Как мне это реализовать?