nomethoderror في عرض السقالات الأساسية؟
-
18-09-2019 - |
سؤال
لقد أنشأت سقالة أساسية لطراز فو مع خاصية واحدة - شريط: سلسلة
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 هو الطابع الزمني للهجرة.).
نصائح أخرى
هل أعدمت ترحيلك؟
لا تنتمي إلى StackOverflow