0

だから私は MHartl Rails チュートリアルに取り組んでいますが、これまでのところ素晴らしいものでしたが、最初のエラーに遭遇したばかりで、実用的な解決策を見つけるのに苦労しています.

エラー:

 NoMethodError in Users#new

Showing /Users/myname/Sites/rails_projects_updated/first_app/app/views/users/new.html.erb where line #6 raised:

undefined method `model_name' for NilClass:Class

Extracted source (around line #6):

3: 
4: <div class="row">
5:   <div class="span6 offset3">
6:     <%= form_for(@user) do |f| %>
7: 
8:       <%= f.label :name %>
9:       <%= f.text_field :name %>

New.html.erb:

<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@user) do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
    <% end %>
  </div>
</div>

そしてユーザーコントローラー

class UsersController < ApplicationController

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

   def create
      @user = User.new(params[:user])
      if @user.save
        # Handle a successful save.
      else
        render 'new'
      end
    end
  end

どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

1

確かに、コントローラーから次のメソッドが欠落しています。

 def new
    @user = User.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @user }
    end
  end

何が起こっているかというと、フォームが作成アクションに応答してrender 'new'いて、この質問にはないヒットしているということです。アクションがnewレンダリングされると@user = User.new、新しいユーザーを作成できるようになります。

于 2013-04-17T18:22:44.360 に答える