سؤال

لقد أنشأت سقالة أساسية لطراز فو مع خاصية واحدة - شريط: سلسلة

foos / new.html.erb:

<h1>New foo</h1>

<% form_for(@foo) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :bar %><br />
    <%= f.text_field :bar %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', foos_path %>

لكنني أحصل على nomethoderror الخاص بممتلكاتي "البار":

 NoMethodError in Foos#new

Showing app/views/foos/new.html.erb where line #8 raised:

undefined method `bar' for #<Foo id: nil, created_at: nil, updated_at: nil>

Extracted source (around line #8):

5: 
6:   <p>
7:     <%= f.label :bar %><br />
8:     <%= f.text_field :bar %>
9:   </p>
10:   <p>
11:     <%= f.submit 'Create' %>

كما ترون، بار العقار الوحيد في نموذجي فو:

class CreateFoos < ActiveRecord::Migration
  def self.up
    create_table :foos do |t|
      t.String :bar

      t.timestamps
    end
  end

  def self.down
    drop_table :foos
  end
end

والطريقة الجديدة في foos_controller هي من سقالة الافتراضية:

  def new
    @foo = Foo.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @foo }
    end
  end

سيكون موضع تقدير أي أفكار

هل كانت مفيدة؟

المحلول

يبدو أنك تكبر كلمة String في ترحيل DB الخاص بك. جربه مع حالة صغيرة وقوة الترحيل لتشغيل مرة أخرى (rake db:migrate:redo, ، على افتراض أن هذا كان الترحيل الأخير الخاص بك، واستخدام غير ذلك

 rake db:migrate:down VERSION=29843923 && rake db:migrate:up VERSION=29843923

حيث 29843923 هو الطابع الزمني للهجرة.).

نصائح أخرى

هل أعدمت ترحيلك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top