2011-11-24 90 views
1

我很新的軌道,我試圖顯示用戶在我的應用程序中所做的所有帖子。我沒有在這個論壇上通過類似的帖子,但沒有成功。我做了一些名稱,標題和內容屬性的腳手架,然後創建了一個名爲Blogger的模型,其中包含'name'屬性。顯示RAILS中的單個用戶的所有帖子

這裏是我的代碼

控制器

class BloggersController < ApplicationController 

    def show 
    @blogger = blogger.find(params[:id]) 
    @title = @blogger.name 
    @posts = @blogger.posts 
    respond_with(@posts) 
    end 
end 

查看

Index.html.erb 

<% @blogger.post.each do |post| %> 
    post.name 
    # Comments to the Post 
    post.comments.each do |comment| 
    comment.comments 
<% end %> 

型號

class Post < ActiveRecord::Base 
    validates :name, :presence=>true 
    validates :title, :presence=>true 
    has_many :comments 
    belongs_to :blogger 
    belongs_to :topic, :touch => true 
    accepts_nested_attributes_for :blogger 
    attr_accessible :name, :title, :content 
end 

我是個得到一個 「在帖子#指數NoMethodError」 錯誤,說:

未定義的方法`後」的零:NilClass,並在提取的源index.htm.erb代碼

+0

什麼是你'Blogger'類?很重要的,因爲你嘗試從這個模型接近帖子:> –

+0

一爲博客名爲「名稱」的字符串。每個博客可以創建多個帖子。我希望列出博客作者點擊其名稱時發佈的所有帖子。感謝您的幫助 – user1063028

+0

您的整個班級「Blogger」是一個名爲'name'的單個字符串?不確定這是否正確,因爲您參考了'blogger.name'和'blogger.posts'。 –

回答

0

也許是因爲你把index.html.erb 這個代碼,這樣,當你嘗試顯示這個HTML頁面,rails將嘗試調用控制器中的方法索引,但是您沒有任何稱爲index的方法。 嘗試把這個代碼的方法稱爲索引/或試圖改變自己的html.erb文件的名稱show.html.erb

編輯:那麼,在你的代碼通過@posts變量,但在你的查看你所謂的@ blogger.post。 它不應該被解決。您必須選擇將@blogger或@posts傳遞給視圖,並只使用傳遞給視圖的變量的屬性。

2

沒有答案,只是一些指導原則:

有你的問題的代碼錯誤很多。

@blogger = blogger.find(params[:id]) 

我覺得應該改成

@blogger = Blogger.find(params[:id]) 

在明年做出

raise @blogger.inspect 

,看看它的加載。

,並在您的視圖,你可以做的更好這一點: (順便說一句:它需要被調用,如果你有表演方法show.html.erb不index.html.erb)

#show html.erb 

<%=render @blogger.posts %> 

,然後您在文章/文件_post.html.erb

<%= post.name %> 
<%= render post.comments %> 

,並在那裏你呈現註釋文件comments/_comment.html.erb

這是軌道乾燥!

0

你正在尋找的錯誤是一個簡單的拼寫錯誤,在你看來,你應該寫的

@blogger.posts.each 

代替

@blogger.post.each 

希望這有助於。

相關問題