Ruby 创建的对象不保存在数据库中

Ruby 创建的对象不保存在数据库中,ruby,activerecord,Ruby,Activerecord,我做了什么: 创建一个新的ruby应用程序rails新活动管理器 移动到活动\u管理器目录,生成第一个脚手架活动 rails生成脚手架活动名称:string并迁移 将根路径根添加到:“活动#索引”,如:“活动” 这样几个字符串的代码。然后我启动服务器来测试它。一切看起来都很好,但当我尝试添加一个新的活动时,没有任何保存。按下“创建活动”按钮后,我在控制台中收到如下消息: Started POST "/" for 127.0.0.1 at 2012-04-25 22:30:40 +0300 Pro

我做了什么:

  • 创建一个新的ruby应用程序
    rails新活动管理器
  • 移动到活动\u管理器目录,生成第一个脚手架活动
    rails生成脚手架活动名称:string
    并迁移
  • 将根路径
    根添加到:“活动#索引”,如:“活动”
  • 这样几个字符串的代码。然后我启动服务器来测试它。一切看起来都很好,但当我尝试添加一个新的活动时,没有任何保存。按下“创建活动”按钮后,我在控制台中收到如下消息:

    Started POST "/" for 127.0.0.1 at 2012-04-25 22:30:40 +0300
    Processing by CampaignsController#index as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"sKom3YBDEbOcqbSt3gLGWPqBNeqkEw6M59hlwrmH4tM=", "campaign"=>{"name"=>"test"}, "commit"=>"Create Campaign"}
      Campaign Load (0.3ms)  SELECT "campaigns".* FROM "campaigns" 
      Rendered campaigns/index.html.erb within layouts/application (0.9ms)
    Completed 200 OK in 37ms (Views: 35.4ms | ActiveRecord: 0.3ms)
    
    然后我重定向到活动列表,并没有新的活动。db\development.sqlite3中的表活动为空。
    此外,我将print方法添加到活动控制器,以检查我是否调用了正确的方法。我看到,当我按下“创建活动”按钮时,create方法没有被调用。
    我的活动/新视图:

    <h1>New campaign</h1>
    
    <%= form_for(@campaign) do |f| %>
    
      <div class="field">
        <%= f.label :name %><br />
        <%= f.text_field :name %>
      </div>
      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>
    
    <%= link_to 'Back', campaigns_path %>
    
    新活动
    

    为什么我不能将我的活动保存到数据库

    活动/new
    中查看查看代码会有所帮助,但很明显,您可以从日志中看到的发布到
    /
    的表单正在由
    索引
    操作处理(这是根据您的路线而定)。您必须确保
    活动/new
    中的表单发布到
    /magnities
    (在Rails RESTful路由中,该表单解析为
    创建
    操作)。如果您正在为
    使用
    表单_(我认为这是脚手架生成的),它应该如下所示:

    resources :campaigns
    root to: 'campaigns#index'
    

    问题出在
    routes.rb
    文件中

    root to: 'campaigns#index', as: 'campaigns'
    
    别名
    为:“活动”
    尝试使用所有请求。无需向root指令添加别名,默认情况下它已经有一个别名:
    为:“root”

    您的
    routes.rb
    文件必须如下所示:

    resources :campaigns
    root to: 'campaigns#index'
    

    更多关于路线的信息(谢谢本杰明,我变得更聪明了)