0

私はRailsが初めてです。に示すように、私の new.html.erb ファイルは完璧に機能しますhttp://localhost:3000/signup。ただし、 /edit を機能させることができないようです。次のエラーが表示されます。

undefined method `model_name' for NilClass:Class
Extracted source (around line #3):

1: <h1>Account Information</h1>
2: 
3: <%= form_for @user do |f| %>
4:   <% if @user.errors.any? %>
5:     <div class="error_messages">
6:       <h2>Form is invalid</h2>

これは、動作する new.html のレプリカである私の edit.html ファイルです。エラー メッセージ コードを削除しようとしましたが、ページに別のエラーが表示されました。

<h1>Account Information</h1>

<%= form_for @user do |f| %>
  <% if @user.errors.any? %>
    <div class="error_messages">
      <h2>Form is invalid</h2>
      <ul>
        <% @user.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

    <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="field">
        <%= f.label :password_confirmation %><br/>
        <%= f.password_field :password_confirmation %>
    </div>
    <div class="field">
        <%= f.label :username %><br/>
        <%= f.text_field :username %>
    </div>
    <div class="field">
        <%= f.label :zip_code %><br/>
        <%= f.text_field :zip_code %>
    </div>
    <div class="field">
        <%= f.label :birthday %><br/>
        <%= f.text_field :birthday %>
    </div>  
    <div class="actions"><%= f.submit %></div>
<% end %>

ここに私の users_controller がありますが、見る必要があるかどうかはわかりません。多分私はdef editの部分が間違っています。

   class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      session[:user_id] = @user.id
      redirect_to root_url, notice: "Thank you for signing up!"
    else
      render "new"
    end

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

  def update
    @user = User.find(params[:user])
    if @user.update_attributes(params[:user])
      flash[:success] = "Account updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
  end
end
end
end
4

1 に答える 1

1

コードのインデントは、ここでの兆候です。内部editでメソッドとupdateメソッドを定義しています。直前の はではなく を閉じます。 def createendif @user.savedef create

于 2013-02-25T16:12:50.430 に答える