Как отобразить «сообщения на стене» на странице пользователя? - PullRequest
0 голосов
/ 08 апреля 2011

Я пытаюсь показать "сообщения на стене", которые все пользователи сделали на странице определенного пользователя, но у меня возникают проблемы с отображением правильных сообщений.

Пользовательский контроллер:

def show
  @user = User.find_by_cached_slug(params[:id])
  @posts = Post.find_all_by_poster(params[@user.id])
  if signed_in?
    @post = Post.new
  end

  respond_to do |format|
    format.html # show.html.erb
    format.xml { render :xml => @user }
  end
end

Почтовая форма:

<%= form_for @post do |f| %>
  <div class="field">
    <%= f.text_area :content %>
  </div>
  <div class="field">
    <%= f.hidden_field :user_id, :value => current_user.id %>
  </div>
  <div class="field">
    <%= f.hidden_field :poster, :value => @user.id %.
  </div>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

Когда пользователь создает сообщение, идентификатор current_user сохраняется в таблице сообщений как :user_id, а идентификатор пользователя страницы пользователя, на которой он публикует, сохраняется как :poster. Эта часть работает, но я не понимаю, как отобразить @posts, чтобы отображались только сообщения, сделанные на странице этого пользователя.

Подход, который я пробую, как-то показывает / фильтрует? все сообщения, где :poster соответствует идентификатору пользователя на странице пользователя; Тем не менее, я не знаю, как заставить это работать или есть ли лучший способ. Любая помощь?

Примечание: я использую драгоценный камень. В представлении Пользователи / шоу я использую <%= render @posts %>. В конце концов, я бы хотел, чтобы пользователи могли комментировать посты, если это влияет на какие-либо дизайнерские решения.

Большое спасибо за вашу помощь! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

1 голос
/ 08 апреля 2011

Я думаю, что эта строка является проблемой:

@posts = Post.find_all_by_poster(params[@user.id])

@user - это запись для пользователя, стена которого сейчас просматривается.(верно?) Вам нужны все посты, которые были опубликованы на этой стене пользователей, то есть все записи постов, где poster == @user.id.Для этого не нужно искать в хеше params.Я считаю, что эта строка должна быть:

@posts = Post.find_all_by_poster(@user.id)

Если это неверно, это означает, что мне не ясно, как ваше действие show должно работать.Есть две разные вещи, которые могут быть @user.По соглашению это всегда должно относиться к записи человека на другом конце соединения.В вашем случае это выглядит так, как будто это относится к человеку, чья стена просматривается.Это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...