Rails 3 - как напечатать оператор с одного контроллера на другой - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть ArticleController, в котором есть оператор со всеми элементами в таблице Articles. Заявление также имеет нумерацию страниц с помощью jQuery.

Я бы хотел использовать этот оператор с разбиением на страницы в другом контроллере для выписки элементов из таблицы БД, только другой будет другая таблица.

Как я могу это сделать? Я пытаюсь в моем другом контроллере что-то вроде:

<%= render :template => 'articles/index'%> #here is the Articles' statement

Но когда я нажимаю на следующую страницу выписки, я вижу только загрузку, но данные не загружаются - похоже, что другие страницы не загружаются.

Что я делаю не так?

РЕДАКТИРОВАТЬ: - контроллеры:

ArticlesController

  def index
    @articles = Article.all.per_page(8)

    respond_to do |format|
      format.html # index.html.erb
      format.js
      format.xml  { render :xml => @articles }
    end
  end

Статьи / index.html.erb

        <div id="articles">
          <%= render @articles %>
        </div>
        <%= will_paginate @articles %>

Статьи / index.js.erb

$('#articles').append('<%= j render(@articles) %>');

Статьи / _article.html.erb

...just a printing of data...

Второй контроллер - SecondsController :

  def index
    @articles = Article.all.per_page(8)
  end

секунд / index.html.erb

<%= render :template => 'articles/index'%>

1 Ответ

0 голосов
/ 06 февраля 2012

Я начал писать комментарий, но он стал слишком длинным.

Я не использовал нумерацию страниц Ajax, поэтому я не уверен, как она должна работать. Тем не менее, ваш код смущает меня.

  1. Работает ли нумерация страниц на стандартном ArticlesController? Если даже это не сработает, возможно, вы захотите начать с известного рабочего примера, например RailsCast # 174 .

  2. Похоже, вы визуализируете индекс (render @articles) из самого индекса. Это на самом деле работает? Я ожидал, что он вылетит с бесконечным циклом или сделает что-то неожиданное.

  3. Может быть, это не имеет значения, но я использовал только will_paginate таким образом. Это что-то меняет?

    Article.all.paginate (: page => params [: page],: per_page => params [: per_page])

  4. Опять же, у меня нет опыта работы с ajax, поэтому я не могу помочь вам напрямую. Однако сначала вы работали со стандартным html, а затем постепенно добавляли ajax после его работы? Вот одна структура, которую вы можете использовать: (Я предпочитаю явные локальные, но вы можете игнорировать это, если хотите).

article / index.html.erb (то же самое для секунды / index.html.erb)

...
<%= render :partial =>'articles/list', :locals => {:articles => @articles} %>
...

Статьи / _list.html.erb:

...
<%= articles.each do |article| %>
          <% render :partial =>'articles/article', :locals => {:article => article} %>
<% end %>
<%= will_paginate articles %>
...
...