第一部分:
我有一个索引页面,列出了我的应用程序中的所有帖子。我希望能够单击链接标题并将其重定向到帖子显示页面。这是我的索引页。
<% 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>
我很确定它是因为post
我的link_to 中的,但我不知道我会放什么让它去正确的地方。当我运行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
定义的方法。谢谢您的帮助。