0

マルチユーザー ブログからのすべての投稿のフィードを実装しようとしています。このメソッドを定義する場所と、可能な限り「RESTFUL」になるように定義する方法を知りたいです。

投稿のインデックス ビューに配置することを考えていますが、問題は、その投稿を作成したユーザー名属性にアクセスできないことです。index アクションは現在、次のようになっています。

def index
 @posts = Post.all
end

そしてこれを行う:

def index
 @user=User.find(params[:user_id])
 @posts = @user.posts.all
end

「 ID のないユーザーが見つかりませんでした」というエラーが発生します

アプリ情報: ユーザー リソースと投稿リソースがあります (ユーザーにネストされています)。それはほとんどそれです。ありがとう

説明:

これまでの支援に感謝します。私のコントローラーのインデックスアクションは次のように定義されています

def index
 @users = User.all
 @posts = @users.collect { |user| user.posts }.flatten
end

私が抱えている問題は、投稿のユーザー名をビューに表示することです。たとえば、これは機能しますが、投稿の属性のみを表示します:

<% @posts.each do |post| %>
<ul>
    <li> <%= post.title %>
         <%= post.content %>
         <%= user.name %> or <%= @user,name %> #This does not work
         </li>
</ul>

ブロックを正しく書いたかどうかはわかりません。これが物事を明確にすることを願っています

4

3 に答える 3

0

まず、必要なユーザーを照会する必要があります...

def index
# For example...
@users = User.all # or...
@users = User.find_by_group_id(params[:group_id]) # etc...

# Then, from your users, you need to collect the posts...
@posts = @users.collect { |user| user.posts }.flatten
end

これにより、各ユーザーの投稿の配列が取得され、それが 1 つの配列にフラット化されます。その時点で、配列を好きなように並べ替えることができます。

あなたが何を探しているのか正確にはわかりませんが、これらはほんの一部のアイデアです。アプリがどのように構成されているか (およびユーザーのグループが編成されているか) に応じて、投稿された juanpastas のような並べ替えられたネストされたリソースを使用する可能性があります。

于 2013-05-21T00:58:42.613 に答える
0

間違った URL にアクセスしているはずです。

まず、サーバー コンソールでパラメーターを確認しますuser_id。param は表示されません。

このパラメータを設定するには、正しいルートを使用してください

user_posts_path(an_user_instance)

ルートにあると思います:

resources :users do
  resources :posts
end
于 2013-05-21T00:29:51.470 に答える