2

最初の部分:

アプリ内のすべての投稿を一覧表示するインデックス ページがあります。リンクのタイトルをクリックして、投稿の表示ページにリダイレクトできるようにしたいと考えています。これが私のインデックスページです。

<% provide(:title, "All Posts") %>
<% @posts.each do |post| %>
    <div>
        <h2><%= link_to post.title.titleize, post %> by <%= post.author.name.titleize %></h2>
        <div><%= post.body %></div>
    </div>
<% end %>

index自分のページにアクセスしようとすると、

undefined method `post_path' for #<#<Class:0x007fc6df41ff98>:0x007fc6df436e78>

私のlink_toにあるためだと確信してpostいますが、正しい場所に移動するためにそこに何を置くかはわかりません。実行rake routesすると、posts#show アクションが

user_post GET    /users/:user_id/posts/:id(.:format)      posts#show

だから私は置き換えpostてみましたuser_post_path(post)が、その後私は得る

No route matches {:action=>"show", :controller=>"posts", :user_id=>#<Post id: 4, title: "werwef", body: "erfwerfwerf", user_id: 3, created_at: "2013-08-16 20:05:43", updated_at: "2013-08-16 20:05:43">, :id=>nil, :format=>nil} missing required keys: [:id]

何に変更する必要がありますか?

第二部:

投稿を<%= post.author.name.titleize %>投稿したユーザー名を出力する必要があり、投稿モデルで定義したメソッドから取得しています

def author
    User.find(self.user_id)
end 

これはこれを行うための最良の方法ですか?メソッドを作成する前に を試しましpost.user.nameたが、うまくいきませんでしたuser。助けてくれてありがとう。

4

1 に答える 1

4

前編

これらはネストされたパスであるため、ユーザーと投稿を渡すことを検討しましたか? user_id最終的なURLにはpost_idと が必要なため、次の呼び出しが必要になる場合があります。

<%= link_to user_post_path(post.user, post) %> 

ドキュメントはこちら: Rails Guide on Nested Resources

この SO questionから抽出。

第二部

関連付けの呼び出しを見逃す可能性があります。

Post.rb

belongs_to :user

ユーザー.rb

has_many :posts

そして、あなたは使用することができますpost.user

于 2013-08-16T20:49:44.747 に答える