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
rails新活动管理器
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'
更多关于路线的信息(谢谢本杰明,我变得更聪明了)