Ruby / Rails - разбиение AJAX на вложенные ресурсы. Как определить родительский ресурс? - PullRequest
2 голосов
/ 30 мая 2011

У моей модели Posts, Users и Comments. Пользователи могут оставлять комментарии на / о сообщениях. Каждый комментарий принадлежит пользователю и сообщению. Поэтому модель Comment имеет поле user_id и поле post_id.

При просмотре Post я хочу разбить на комментарии этого поста.
При просмотре User я хочу разбить комментарии этого пользователя на страницы.
Я хочу разбить на страницы, используя AJAX (через камень Kaminari).

У меня настроены вложенные маршруты для обоих.

В сообщении URL-адрес, по которому выполняется обращение, http://localhost:3000/posts/{:id}/comments?page={page_number}
У пользователя URL-адрес: http://localhost:3000/users/{:id}/comments?page={page_number}

Оба URL обращаются к действию index контроллера Comments.

У меня такой вопрос: внутри действия index как мне определить, является ли предоставленный {:id} user_id или post_id, чтобы я мог получить нужные комментарии.

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Проверьте для params[:user_id] и params[:post_id] в контроллере комментариев:

if params[:user_id]
  #call came from /users/ url
elsif params[:post_id]
  #call came from /posts/ url
else
  #call came from some other url
end
0 голосов
/ 06 марта 2014

Мне нравится путь Райана Бейтса

class CommentsController
  before_action :load_commentable

  def index
    @comments = @commentable.comments.page(params[:page])
  end

  private

    def load_commentable
      klass = [Post, User].detect { |c| params["#{c.name.underscore}_id"] }
      @commentable = klass.find(params["#{klass.name.underscore}_id"])
    end
end
...