2011-12-01 46 views
-1

當我嘗試在我的本地主機簽約,這是我的錯誤:不能註冊(錯誤「對象」的方法),無法登錄(爲「創建」方法錯誤)

NameError in Users#new 
Showing /Users/alonbond/rails_projects/sample_app/app/views/shared/_error_messages.html.erb where line #1 raised: 
undefined local variable or method `object' for #<#<Class:0x007f90a3c32d60>:0x007f90a3bf83b8> 
Extracted source (around line #1): 

    1: <% if object.errors.any? %> 
    2: <div id="error_explanation"> 
    3:  <h2> 
    4:  <%= pluralize(object.errors.count, "error") %> 

這是「新」

<h1>Sign up</h1> 

<%= form_for(@user) do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <%= render 'fields', :f => f %> 
    <div class="actions"> 
    <%= f.submit "Sign up" %> 
    </div> 

我的第二個問題是,當我嘗試登錄(我已報名前)代碼:

NoMethodError in SessionsController#create 
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.[] 

此爲 'create' 方法的代碼:

def create 
    user = User.authenticate(params[:session][:email], params[:session][:password]) 

    if user.nil? 
     flash.now[:error] = "Invalid email/password combination." 
     @title = "Sign in" 
     render 'new' 
    else 
     sign_in user 
     redirect_back_or user 
    end 
    end 

for_for:

<%= form_for(:session, :url => sessions_path) do |f| %> 
    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Sign in" %> 
    </div> 
<% end %> 

回答

0

使用@user本地變量的部分,使用爲flash[:error]閃光燈消息。

+0

用於部分工作的@user現在,但用閃存錯誤替換'對象'是雜亂的,因爲更多的文件包括'對象',老實說,我不知道如何將它們全部替換爲工作閃存錯誤。 '對象'假設工作。那爲什麼不呢?非常感謝! –

+0

@AlonWeissfeld你的'new'方法是否創建一個新用戶?如果沒有,我也希望'form_for'中有一個錯誤,但否則,我不知道。什麼版本的Rails? –

+0

是的,'新'創建一個新用戶。無論如何,我已經在主要問題上發佈了form_for代碼,看起來很好。我正在使用rails 3.0.1,實際上我試圖將rails升級到3.1,但是當我嘗試安裝它時,出現無法解釋的「本機擴展」安裝失敗的錯誤。 –