我已经经历了几个小时,我似乎无法找到问题。我在rails中做了一个简单的联系人表格,这是一个跟随我的教程。我收到以下错误消息:
#
的未定义方法`name'
我在我的DB / migrate文件中有这个:
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts do |t|
t.string :name
t.string :email
t.text :comments
t.timestamps
end
end
end
这在我的contacts_controller.rb
文件中:
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
end
end
这是我的pages_controller.rb
:
class PagesController < ApplicationController
def homepage
end
def about
end
end
这是我的HTML:
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="well">
<%= form_for @contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :comments %>
<%= f.text_area :comments, class: 'form-control' %>
</div>
<%= f.submit 'Submit', class: 'btn btn-default' %>
<% end %>
</div>
</div>
</div>
答案 0 :(得分:2)
您是否开始迁移?
如果没有,请这样做:
bundle exec rake db:migrate
这将在您的数据库中创建contacts
表(其中包含name
列以及您在构建时使用的其他列email
和comments
你的表格)。此外,重新启动您的rails服务器,然后您应该能够毫无问题地使用您的表单代码。
答案 1 :(得分:0)
您可能没有迁移过您的表格。
在你的控制台中运行:
struct example {
char array [5];
};
struct example* exp = (struct example*)malloc(sizeof(struct example));
然后重新启动服务器并重试。
答案 2 :(得分:0)
其他答案总结得很好 - 你需要迁移你的contacts
表:
$ rake db:migrate
您需要read up on Rails migrations here。
顺便说一下,
信息页强>
我不知道每个人似乎都在关注哪个教程,它告诉你对静态页面使用特定的操作,IMO是非常糟糕的做法(特别是从长远来看)。
多更通用(和“Railsy *”)解决方案是将数据的内容放入数据库中,然后可以使用模型调用 - 允许您可以为所有网页设置一个show
视图:
#config/routes.rb
resources :pages, only: [:show]
#app/controllers/pages_controller.rb
class PagesController < ApplicationController
def show
@page = Page.find params[:id]
end
end
#app/views/pages/show.html.erb
<%= @page.title %>
<%= @page.body %>
您必须为 pages 数据表创建另一个迁移,如下所示:
$ rails g migration CreatePages
class CreatePages < ActiveRecord::Migration
def change
create_table :pages do |t|
t.string :title
t.text :body
t.timestamps
end
end
end
$ rake db:migrate
<强> HTML 强>
您当前的HTML效率会更高:
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="well">
<%= form_for @contact do |f| %>
<% attributes = {name: "text_field", email: "email_field", comments: "text_area"} %>
<% attributes.each do |attr,val| %>
<div class="form-group">
<%= f.label attr.to_sym %>
<%= f.send(val, attr.to_sym, class: 'form-control') %>
</div>
<% end %>
<%= f.submit 'Submit', class: 'btn btn-default' %>
<% end %>
</div>
</div>
</div>