2013-03-14 36 views
0

Rails中的新手。繼邁克爾·哈特爾的在軌道上的教程,我試圖通過最後一節,我得到這個錯誤Static_pages中的NoMethodError#方法ID的主頁

undefined method `id' for #<String:0x3794b80> 

它來自我的_feed_item.html.erb,我不明白爲什麼我得到這個錯誤。

<li id="<%= feed_item.id %>"> 
    <%= link_to gravatar_for(feed_item.user), feed_item.user %> 
    <span class="user"> 
    <%= link_to feed_item.user.name, feed_item.user %> 
    </span> 
    <span class="content"><%= feed_item.content %></span> 
    <span class="timestamp"> 
    Posted <%= time_ago_in_words(feed_item.created_at) %> ago. 
    </span> 

    <% if current_user?(feed_item.user) %> 
    <%= link_to "delete", feed_item, method: :delete, data: { confirm: "You sure?" }, title: feed_item.content %> 
    <% end %> 
</li> 

嘿,夥計們,對不起,我覺得;後睡着了。

在審查我所有的控制器時,我並不特別看到它的定義,但它在我開始上一個任務之前確實工作,所以我不知道它們之間發生了什麼。

這裏是user_controller

class UsersController < ApplicationController 
before_filter :signed_in_user, only: [:index, :edit, :update] 
before_filter :correct_user, only: [:edit, :update] 
before_filter :admin_user,  only: :destroy 
def new 
@user=User.new 
end 

def create 
@user=User.new(params[:user]) 

if @user.save 
    #Handle a save 
    sign_in @user 
    flash[:success] = "Welcome to the Sample App!" 
    redirect_to @user 
else 
    render 'new' 
end 
end 

def show 
@user=User.find(params[:id]) 
@[email protected](page: params[:page]) 
end 

def edit 
@user=User.find(params[:id]) 
end 

def update 
@user=User.find(params[:id]) 
if @user.update_attributes(params[:user]) 
    flash[:success]="Successfully updated your profile" 
    sign_in @user 
    redirect_to @user 

else 
    render 'edit' 
end 
end 




def correct_user 
@user=User.find(params[:id]) 
redirect_to(root_path) unless current_user?(@user) 
end 

def index 
@users=User.paginate(page: params[:page]) 
end 

def destroy 
User.find(params[:id]).destroy 
flash[:success]="User destroyed" 
redirect_to users_url 
end 

def admin_user 
redirect_to(root_path) unless current_user.admin? 
end 

def following 
@title="Following" 
@user=User.find(params[:id]) 
@[email protected]_users.paginate(page: params[:page]) 
render 'show_follow' 
end 

def followers 
@title="Followers" 
@user=User.find(params[:id]) 
@[email protected](page: params[:page]) 
render 'show_follow' 

端 端

micrpost_controller

class MicrpostsController< ApplicationController 
before_filter :signed_in_user, only: [:create, :destroy] 

DEF索引

def create 
@micropost=current_user.microposts.build(params[:micropost]) 
if @micropost.save 
    flash[:success]="Micropost Created!" 
    redirect_to root_url 

    else 
    @feed_items = [] 
    render 'static_pages/home' 
    end 
    end 

def destroy 
@micropost.destroy 
redirect_to root_url 
end 

def correct_user 
@micropost=current_user.microposts.find_by_id(params[:id]) 
redirect_to root_url if @micropost.nil? 
end 
end 
+0

你能發佈完整的代碼嗎? – 2013-03-14 05:39:51

+3

這是因爲feed_item是一個字符串,而不是(我假設)一個FeedItem,出於某種原因。正如Ganesh指出的那樣,需要更多的代碼。 – 2013-03-14 06:00:48

+0

請將控制器代碼發佈到您設置feed_item的位置。 – tackleberry 2013-03-14 07:30:42

回答

0

我明白這是爲了工作的人。這些問題出現在我的微博模型中。

def self.from_users_followed_by(user) 
followed_user_ids= "SELECT followed_id FROM relationships WHERE follower_id=:user_id", 
where("user_id IN (#{followed_user_ids}) OR user_id=:user_id", user_id: user) 
end 

應該已經 DEF self.from_users_followed_by(用戶) followed_user_ids = 「SELECT followed_id FROM關係WHERE follower_id =:USER_ID」 其中( 「user_id說明IN(#{followed_user_ids})OR USER_ID =:USER_ID」 ,user_id:user.id) end

相關問題