0

Railsの初心者。マイケル・ハートルのレールに関するチュートリアルに従って、最後のセクションを通過しようとすると、このエラーが発生します

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])
@microposts=@user.microposts.paginate(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])
@users=@user.followed_users.paginate(page: params[:page])
render 'show_follow'
end

def followers
@title="Followers"
@user=User.find(params[:id])
@users=@user.followers.paginate(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
4

1 に答える 1

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(user) followed_user_ids= "SELECT followed_id FROM Relationship WHERE follower_id=:user_id" where("user_id IN (#{followed_user_ids}) OR user_id=:user_id", user_id: user.id) end

于 2013-03-14T17:53:49.310 に答える