Я искал и искал, и ничего не получилось, поэтому мне нужно попросить вас, ребята, о помощи.form_for не отправляет поля в базу данных
У меня есть простая новая форма, которая должна принимать два поля из form_for, а затем отправлять их в базу данных. Проблема в том, что это не так.
Мой образец дб имеет только два поля: имя и 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
После нажатия кнопки отправки только временные метки. Вот фрагмент из рельсов сервер:
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)
Как вы можете видеть эти поля передаются как параметры, но ВСТАВИТЬ не вставляет их вообще.
Я пробовал это с по умолчанию спокойной маршрутизации, написав свои собственные маршруты, и это не работает в любом случае.
В качестве бонуса моих маршрутов:
get 'cases' => 'kejsy#index', as: :kejs_index
get 'cases/new' => 'kejsy#new', as: :new_kejs
post 'cases' => 'kejsy#create'
Было бы также полезно включить модель. Похоже, из журнала, что ваше действие правильно принимает параметры и проблема в строке Kejsu.new (params [: kejsu]) – amitamb
Моя модель довольно пустая, только стандартная декларация, созданная с помощью рельсов g. – toxicbeaver