0

初歩的かもしれませんが、StackOverflow を使用するのはこれが初めてで、Ruby を学習しようとしています。ピンタレストに似たonemonthrails.comのチュートリアルでアプリを作っています。ピンを追加しようとしていますが、エラーが発生し続けます:

ピンの NoMethodError#new

/Users/jake/code/omrails/app/views/pins/_form.html.erb を表示して、5 行目が発生しました:

undefined method `description' for # 抽出されたソース (5 行目あたり):

質問に答えるのに何が役立つかわからないので、次のコマンドを実行したときに受け取ったすべてのファイル (質問に関連する可能性があります) を投稿します: $ rails generate scaffold Pins

移行ファイル:

class CreatePins < ActiveRecord::Migration
  def change
    create_table :pins do |t|
      t.string :description

      t.timestamps
    end
  end
end

モデル:

class Pin < ActiveRecord::Base
  attr_accessible :description
end

_form.html.erb: (ここでエラーが見つかりました)

<%= simple_form_for(@pin) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :description %>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

new.html.erb: (これは「テンプレート結論のトレース」です)

<h1>New pin</h1>

<%= render 'form' %>

<%= link_to 'Back', pins_path %>

メソッドが attr_accessible :description の下のモデルで定義されていると思ったので、エラーがわかりません

私が今言ったことを理解できるなら、助けていただければ幸いです。そうでない場合は、時間を割いてご覧いただきありがとうございます。

4

3 に答える 3

1

テーブルを作成するには、移行を実行する必要がありpinsます。

 rake db:migrate

テーブルが存在すると不平を言う場合、これは、列を追加するdescriptionに移行を実行したことを意味します。最初に元に戻さないと、移行を再実行しても機能しません。

 rake db:migrate:redo

あなたのポイントを明確にするためにattr_accessible :description-モデルの属性を定義attr_accessibleしません。データベーステーブルがそれを行います(通常は移行に従って)。一括割り当て可能なattr_accessible属性のホワイトリストとして機能します。

于 2013-07-01T16:11:17.360 に答える
0

pinsを持つデータベース テーブル " " を確認していただけますか? そうでない場合は、以前のテーブルを削除して、列descriptionを持つ新しいテーブルを作成してみてください。description

または、移行ファイルを作成して、次のように既存のテーブルを更新できます。

rails g migration add_description_to_pins

次に、このファイル内で:

class AddDescriptionToPins < ActiveRecord::Migration
  def self.up
    add_column :pins, :description, :string
  end

  def self.down
    remove_column :pins, :description
  end
end
于 2013-07-01T16:45:05.427 に答える