【发布时间】:2013-12-10 23:25:22
【问题描述】:
我找了又找,没有找到,所以我需要向你们寻求帮助。
我有一个简单的新表单,它应该从 form_for 中获取两个字段,然后将其发布到数据库中。问题是它没有。
我的示例数据库只有两个字段:name 和 site_id
这是我的 new.html.erb:
<%= form_for @kejsu do |f| %>
<%= f.text_field :name %>
<%= f.text_field :site_id %>
<%= f.submit "Create" %>
<% end %>
这是控制器:
def new
@kejsu = Kejs.new
end
def create
@kejsu = Kejs.new(params[:kejsu])
if @kejsu.save
redirect_to kejs_index_path
else
render "new"
end
end
点击提交按钮后,仅插入时间戳。这是 rails 服务器 的 sn-p:
Started POST "/cases" for 192.168.56.1 at 2013-12-10 23:11:03 +0000
Processing by KejsyController#create as HTML
Parameters: {"utf8"=>"â", "authenticity_token"=>"Sr2ssiwtRtk9pRT5VfuDFglsEmGnjzwVkRGGBSb2zhA=", "kejs"=> {"name"=>"aa", "site_id"=>"3"}, "commit"=>"Create"}
(0.1ms) begin transaction
SQL (5.1ms) INSERT INTO "kejs" ("created_at", "updated_at") VALUES (?, ?) [["created_at", Tue, 10 Dec 2013 23:11:03 UTC +00:00], ["updated_at", Tue, 10 Dec 2013 23:11:03 UTC +00:00]]
(4.0ms) commit transaction
Redirected to http://192.168.56.101:3000/cases
Completed 302 Found in 14ms (ActiveRecord: 9.2ms)
如您所见,这些字段作为参数传递,但 INSERT 根本不插入它们。
我已经尝试使用默认的restful路由,编写自己的路由,但无论哪种方式都不起作用。
作为奖励,我的路线:
get 'cases' => 'kejsy#index', as: :kejs_index
get 'cases/new' => 'kejsy#new', as: :new_kejs
post 'cases' => 'kejsy#create'
【问题讨论】:
-
包含模型也会很有帮助。从日志看来,您的操作正在正确接收参数,问题出在 Kejsu.new(params[:kejsu])
-
我的模型很空,只是通过 rails g 创建的标准声明。
标签: ruby-on-rails forms form-for strong-parameters