http://ruby.railstutorial.org/ Chapters/user-microposts” rel=“nofollow”>railstutorial.org
错误如下:
NoMethodError in Pages#home
Showing /home/alex/apps/sample_app/app/views/shared/_error_messages.html.erb where line #1 raised:
You have a nil object when you didn t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.errors
Extracted source (around line #1):
1: <% if @user.errors.any? %>
2: <div id="error_explanation">
3: <h2><%= pluralize(@user.errors.count, "error") %>
4: prohibited this <%= object.class.to_s.underscore.humanize.downcase %> user from being saved:</h2>
Trace of template inclusion: app/views/shared/_micropost_form.html.erb, app/views/pages/home.html.erb
Rails.root: /home/alex/apps/sample_app
Application Trace | Framework Trace | Full Trace
app/views/shared/_error_messages.html.erb:1:in `_app_views_shared__error_messages_html_erb__227730281_80967500
app/views/shared/_micropost_form.html.erb:2:in `block in _app_views_shared__micropost_form_html_erb___680753694_80558240
app/views/shared/_micropost_form.html.erb:1:in `_app_views_shared__micropost_form_html_erb___680753694_80558240
app/views/pages/home.html.erb:6:in `_app_views_pages_home_html_erb__571228236_80133470
_error_messages.html.erb:
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %>
prohibited this <%= object.class.to_s.underscore.humanize.downcase %> user from being saved:</h2>
<p>There were problems with the following fields:</p>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<>strong>home.html.erb:
<% if signed_in? %>
<table class="front" summary="For signed-in users">
<tr>
<td class="main">
<h1 class="micropost">What s up?</h1>
<%= render shared/micropost_form %>
</td>
<td class="sidebar round">
<%= render shared/user_info %>
</td>
</tr>
</table>
<% else %>
<h1>Sample App</h1>
<p>
This is the home page for the
<a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
sample application.
</p>
<%= link_to "Sign up now!", signup_path, :class => "signup_button round" %>
<% end %>
_micropost_form.html.erb:
<%= form_for @micropost do |f| %>
<%= render shared/error_messages , :object => f.object %>
<div class="field">
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
<>strong>microposts_ Controller.html.erb:
class MicropostsController < ApplicationController
before_filter :authenticate
def create
@micropost = current_user.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to root_path
else
render pages/home
end
end
def destroy
end
end
pages_ Controller.html.erb
class PagesController < ApplicationController
def home
@title = "Home"
@micropost = Micropost.new if signed_in?
end
def contact
@title = "Contact"
end
def about
@title = "About"
end
def help
@title = "Help"
end
end
我一直在再次检查辅导,一切照样。
任何解决这一问题的建议?