RoR - Как использовать div onclick для отображения результатов в отдельной области страницы? - PullRequest
1 голос
/ 23 декабря 2010

Я изучаю Ruby on Rails, и меня очень смущает, как отношения контроллер-модель-представление работают для моего приложения.

Теперь у меня есть таблица, заполненная комментариями (постами) пользователей. Я хочу, чтобы пользователи нажимали на комментарии, чтобы увидеть больше информации на отдельной панели (т. Е. Другие поля базы данных, которые изначально не отображались, например, user_id человека, который оставил комментарий).

В моем _post.html.erb у меня есть что-то вроде:

<div class="post" id="<%= post.post_id %>" onclick = ?? >
<p>post.text</p></div>

Что должно войти в клик? Мне нужен способ для onclick вызвать метод помощника / контроллера, который может загрузить больше информации, а затем поместить его в другой div на странице (я пробовал варианты использования контроллера и помощника для вызова javascript, который вставляет html в сайт, но это кажется грязнее, чем должно быть). Из того, что я понимаю, я должен создать какой-то частичный файл _postdetails.html.erb, который обрабатывает фактическое отображение html, но я понятия не имею, как конкретно указать, куда этот частичный будет идти на странице.

Любая помощь будет оценена, спасибо!

1 Ответ

2 голосов
/ 23 декабря 2010

Вы можете достичь желаемого, используя помощников Rails или написав вызовы AJAX самостоятельно.

Лично я пишу все свои вызовы AJAX вручную, используя jQuery .Вы также можете использовать Prototype , который поставляется с Rails.

При этом вы можете сделать.

В вашем файле JS:

$("div.some-class").click(function()
{
    $.ajax(
    {
      url:"url/to/controller/action",
      type:<GET>/<POST>,
      data://If you wish to sent any payload
    });
});

Inваш контроллер:

def some_action
  #some computation
  render :update do |page|
    page["id_of_div_to_be_refreshed"].replace_html :partial => "some_partial"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...