视图文件夹上的Rails错误消息

时间:2015-10-13 03:32:21

标签: ruby-on-rails ruby methods undefined

我已经经历了几个小时,我似乎无法找到问题。我在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>

3 个答案:

答案 0 :(得分:2)

您是否开始迁移?

如果没有,请这样做:

bundle exec rake db:migrate

这将在您的数据库中创建contacts表(其中包含name列以及您在构建时使用的其他列emailcomments你的表格)。此外,重新启动您的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>