1

私は新しい RoR で、Railstutorial: Chapter 2 を完了しています。

Sublime Text 2で仮想化されたUbuntu 12.04 LTSを使用しています。コマンドプロンプトとしてターミナルを使用しています。

http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

私はいくつかの試行錯誤をしましたが、今は困惑して立ち往生しています.

私は Demo_app に取り組んでおり、図 2.3.3 で行き詰まっています。localhost:3000 をテストしたところ、/users/ と /microposts/ の両方のページが生成され、すべてが機能的に動作しました。つまり、新規、編集、破棄などです。

ユーザーとマイクロポストのレーキ、「bundle exec rake db:migrate」の両方を実行して、明らかにデータ モデルを更新しました。

完了時にターミナルに 'ruby console' と入力して Ruby コンソールに入ります。 " リミット 1

=> #

私は今得る

 1.9.1 :002 > and I type first_user.microposts

これは、含まれているコマンドで得られる結果のエラーです

1.9.1 :001 > first_user = User.first
  User Load (0.1ms)  SELECT "users".* FROM "users" LIMIT 1
 => #<User id: 1, name: "User Name", email: "example@example.com", created_at: "2013-06-23 23:17:01", updated_at: "2013-06-23 23:17:01"> 
1.9.1 :002 > first_user.microposts
NoMethodError: undefined method `microposts' for #<User:0xa6e8afc>
    from /home/user/rails_projects/demo_app/vendor/bundle/ruby/1.9.1/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:407:in `method_missing'
    from /home/user/rails_projects/demo_app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/attribute_methods.rb:149:in `method_missing'
    from (irb):2
    from /home/user/rails_projects/demo_app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
    from /home/user/rails_projects/demo_app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
    from /home/user/rails_projects/demo_app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

エラーに関係していると思われる他のファイルも投稿すると思います。

私のマイクロポスト.rb

    class Micropost < ActiveRecord::Base
    attr_accessible :content, :user_id

   belongs_to :user

   validates :content, :length => { :maximum => 140 }
   end

私のusers_controller.rb

    class UsersController < ApplicationController
      # GET /users
      # GET /users.json
      def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
  end

  # GET /users/1
  # GET /users/1.json
  def show
    @user = User.find(params[:id])

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

  # GET /users/new
  # GET /users/new.json
  def new
    @user = User.new

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

  # GET /users/1/edit
  def edit
    @user = User.find(params[:id])
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render json: @user, status: :created, location: @user }
      else
       format.html { render action: "new" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
     end
  end

  # PUT /users/1
  # PUT /users/1.json
  def update
    @user = User.find(params[:id])

    respond_to do |format|
     if @user.update_attributes(params[:user])
       format.html { redirect_to @user, notice: 'User was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
     end
  end
end

私のuser.rbファイル

class User < ActiveRecord::Base
    attr_accessible :email, :name
    has_many :microposts
end

私のindex.html.erbファイル

  </tr>

<% @users.each do |user| %>
   <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
    <td><%= link_to 'Show', user %></td>
    <td><%= link_to 'Edit', edit_user_path(user) %></td>
    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you     sure?'     } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New User', new_user_path %>

私のルート.rb

DemoApp::Application.routes.draw do
  resources :microposts


  resources :users

#...
end

そして、私は私のGemfileを推測します

source 'https://rubygems.org'

gem 'rails', '3.2.13'

group :development do
    gem 'sqlite3', '1.3.5'
end
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2'

group :production do
    gem 'pg', '0.12.2'
end

私が知っている唯一の問題は、チュートリアルを実行するときに、コマンドを使用する 2.1 である場合です。

バンドルの更新

その後

bundle install -- プロダクションなし

更新を適切に機能させるには、このプロセスを元に戻す必要がありました...stackoverflowを調べたところ、他の回避策が見つかりました...おそらくこれか、サーバーまたは元の宝石、ルビー、レールをセットアップする方法ですインストール。

ご協力ありがとうございます。これを正しく投稿しなかった場合は、提案を行います。

Tkin1

4

6 に答える 6

3

私の場合、問題は、またはrails consoleを保存せずに開始したことでした。user.rbmicropost.rb

を終了rails consoleし、両方のモデル ファイルを保存して、再起動することで解決しましたrails console

を再起動せずにモデル ファイルを保存するだけでは十分ではありませんでしたrails console

于 2016-10-15T13:37:48.087 に答える
0

もう答えはわかっていると思いますが、私の問題はこれでした。

bundle exec rake db:migrateエラーを修正したときに2番目を実行しませんでした。

于 2016-05-30T05:39:13.350 に答える
0

再度実行して、レールミニサーバーを再起動する必要がありましrails serverた。

于 2017-07-25T16:01:15.917 に答える