【发布时间】:2014-08-07 03:59:11
【问题描述】:
我正在使用 Rails 4,并尝试通过表单保存数据,但该过程不断失败。我已尽我所能查看其他有类似问题的人,但即使复制他们的代码对我也不起作用。填写表格后的最终结果是收到错误消息,指出未保存联系人。有任何想法吗?谢谢!
控制器/contacts_controller.rb
class ContactsController < ApplicationController
def create
@contact = Contact.new(contact_params)
if @contact.save
flash[:success] = "Contact saved!"
else
flash[:alert] = "Contact not saved!"
end
end
def destroy
end
def new
@contact = Contact.new
end
private
def contact_params
params.require(:contact).permit(:first_name, :last_name, :email)
end
end
views/contacts/new.html.erb
<div class= "panel-body">
<%= form_for(@contact) do |f| %>
<div class="form-group">
<%= f.label :first_name %>
<%= f.text_field :first_name, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Add", class: "btn btn-primary" %>
</div>
<% end %>
</div>
config/routes.rb
Rails.application.routes.draw do
resources :contacts, only: [:new, :create, :destroy]
end
models/contact.rb
class Contact < ActiveRecord::Base
validates :first_name, presence: true
validates :last_name, presence: true
validates :email, presence: true
end
db/迁移
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts do |t|
t.string :first_name
t.string :last_name
t.string :email
t.timestamps
end
end
end
【问题讨论】:
-
我们能否看到错误消息和您对联系人表的迁移。
-
由于您收到警报消息,我认为会有一些验证失败。你能发布你的联系模型吗?
-
没有错误信息...联系人根本不保存,并且出现“联系人未保存”的闪存。将模型和迁移添加到描述中。
-
你能在 def create 中写一个像 P contact_params 这样的代码,并告诉我它从控制台输出吗
-
@NidhinSG:不清楚你想让我做什么。获取我的联系人参数并在创建中定义它们?
标签: ruby-on-rails forms ruby-on-rails-4