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
你能發佈完整的代碼嗎? – 2013-03-14 05:39:51
這是因爲feed_item是一個字符串,而不是(我假設)一個FeedItem,出於某種原因。正如Ganesh指出的那樣,需要更多的代碼。 – 2013-03-14 06:00:48
請將控制器代碼發佈到您設置feed_item的位置。 – tackleberry 2013-03-14 07:30:42